searchengine/oss/cl/clucene/src/clucene/highlighter/SimpleHTMLEncoder.cpp
changeset 7 a5fbfefd615f
equal deleted inserted replaced
3:ae3f1779f6da 7:a5fbfefd615f
       
     1 #include "CLucene/StdHeader.h"
       
     2 #include "SimpleHTMLEncoder.h"
       
     3 CL_NS_DEF2(search,highlight)
       
     4 
       
     5 SimpleHTMLEncoder::SimpleHTMLEncoder(void)
       
     6 {
       
     7 }
       
     8 
       
     9 SimpleHTMLEncoder::~SimpleHTMLEncoder(void)
       
    10 {
       
    11 }
       
    12 
       
    13 TCHAR* SimpleHTMLEncoder::encodeText(TCHAR* originalText)
       
    14 {
       
    15 	return htmlEncode(originalText);
       
    16 }
       
    17 
       
    18 TCHAR* SimpleHTMLEncoder::htmlEncode(TCHAR* plainText) 
       
    19 {
       
    20 	size_t plainTextLen = _tcslen(plainText);
       
    21 	if (plainText == NULL || plainTextLen == 0)
       
    22 	{
       
    23 		return STRDUP_TtoT(_T(""));
       
    24 	}
       
    25 
       
    26 	CL_NS(util)::StringBuffer result(plainTextLen);
       
    27 
       
    28 	for (int32_t index=0; index<plainTextLen; index++) 
       
    29 	{
       
    30 		TCHAR ch = plainText[index];
       
    31 
       
    32 		switch (ch) 
       
    33 		{
       
    34 		case '"':
       
    35 			result.append(_T("&quot;"));
       
    36 			break;
       
    37 
       
    38 		case '&':
       
    39 			result.append(_T("&amp;"));
       
    40 			break;
       
    41 
       
    42 		case '<':
       
    43 			result.append(_T("&lt;"));
       
    44 			break;
       
    45 
       
    46 		case '>':
       
    47 			result.append(_T("&gt;"));
       
    48 			break;
       
    49 
       
    50 		default:
       
    51 			if (ch < 128)
       
    52 				result.appendChar(ch);
       
    53 			else{
       
    54   	            result.append(_T("&#"));
       
    55 				result.appendInt(ch);
       
    56 				result.append(_T(";"));
       
    57 			}
       
    58 		}
       
    59 	}
       
    60 
       
    61 	return result.toString();
       
    62 }
       
    63 
       
    64 CL_NS_END2