? TextEscaping.diff Index: Formatter.java =================================================================== RCS file: /home/cvspublic/jakarta-lucene-sandbox/contributions/highlighter/src/java/org/apache/lucene/search/highlight/Formatter.java,v retrieving revision 1.3 diff -u -r1.3 Formatter.java --- Formatter.java 26 Jul 2004 20:39:47 -0000 1.3 +++ Formatter.java 3 Feb 2005 15:26:01 -0000 @@ -30,4 +30,10 @@ * @return */ String highlightTerm(String originalText, TokenGroup tokenGroup); + + /** + * @param originalText The section of non highlight text being output + * @return + */ + String encodeText(String originalText); } Index: GradientFormatter.java =================================================================== RCS file: /home/cvspublic/jakarta-lucene-sandbox/contributions/highlighter/src/java/org/apache/lucene/search/highlight/GradientFormatter.java,v retrieving revision 1.4 diff -u -r1.4 GradientFormatter.java --- GradientFormatter.java 7 Jan 2005 22:34:24 -0000 1.4 +++ GradientFormatter.java 3 Feb 2005 15:26:01 -0000 @@ -117,11 +117,11 @@ public String highlightTerm(String originalText, TokenGroup tokenGroup) { if (tokenGroup.getTotalScore() == 0) - return originalText; + return encodeText(originalText); float score = tokenGroup.getTotalScore(); if (score == 0) { - return originalText; + return encodeText(originalText); } StringBuffer sb = new StringBuffer(); sb.append(""); - sb.append(originalText); + sb.append(encodeText(originalText)); sb.append(""); return sb.toString(); } + public String encodeText(String originalText) + { + return SimpleHTMLFormatter.htmlEncode(originalText); + } + protected String getForegroundColorString(float score) { int rVal = getColorVal(fgRMin, fgRMax, score); Index: Highlighter.java =================================================================== RCS file: /home/cvspublic/jakarta-lucene-sandbox/contributions/highlighter/src/java/org/apache/lucene/search/highlight/Highlighter.java,v retrieving revision 1.3 diff -u -r1.3 Highlighter.java --- Highlighter.java 12 Aug 2004 22:09:37 -0000 1.3 +++ Highlighter.java 3 Feb 2005 15:26:01 -0000 @@ -163,7 +163,7 @@ String markedUpText=formatter.highlightTerm(tokenText, tokenGroup); //store any whitespace etc from between this and last group if (startOffset > lastEndOffset) - newText.append(text.substring(lastEndOffset, startOffset)); + newText.append(formatter.encodeText(text.substring(lastEndOffset, startOffset))); newText.append(markedUpText); lastEndOffset=endOffset; tokenGroup.clear(); @@ -198,14 +198,14 @@ String markedUpText=formatter.highlightTerm(tokenText, tokenGroup); //store any whitespace etc from between this and last group if (startOffset > lastEndOffset) - newText.append(text.substring(lastEndOffset, startOffset)); + newText.append(formatter.encodeText(text.substring(lastEndOffset, startOffset))); newText.append(markedUpText); lastEndOffset=endOffset; } // append text after end of last token if (lastEndOffset < text.length()) - newText.append(text.substring(lastEndOffset)); + newText.append(formatter.encodeText(text.substring(lastEndOffset))); currentFrag.textEndPos = newText.length(); Index: SimpleHTMLFormatter.java =================================================================== RCS file: /home/cvspublic/jakarta-lucene-sandbox/contributions/highlighter/src/java/org/apache/lucene/search/highlight/SimpleHTMLFormatter.java,v retrieving revision 1.2 diff -u -r1.2 SimpleHTMLFormatter.java --- SimpleHTMLFormatter.java 26 Jul 2004 20:39:47 -0000 1.2 +++ SimpleHTMLFormatter.java 3 Feb 2005 15:26:01 -0000 @@ -52,10 +52,57 @@ { returnBuffer=new StringBuffer(); returnBuffer.append(preTag); - returnBuffer.append(originalText); + returnBuffer.append(encodeText(originalText)); returnBuffer.append(postTag); return returnBuffer.toString(); } - return originalText; + return encodeText(originalText); + } + + public String encodeText(String originalText) + { + return htmlEncode(originalText); + } + + /** + * Encode string into HTML + */ + public final static String htmlEncode(String plainText) + { + if (plainText == null) + { + return ""; + } + + StringBuffer result = new StringBuffer(); + + for (int index=0; index': + result.append(">"); + break; + + default: + result.append(ch); + } + } + + return result.toString(); } } Index: SpanGradientFormatter.java =================================================================== RCS file: /home/cvspublic/jakarta-lucene-sandbox/contributions/highlighter/src/java/org/apache/lucene/search/highlight/SpanGradientFormatter.java,v retrieving revision 1.1 diff -u -r1.1 SpanGradientFormatter.java --- SpanGradientFormatter.java 7 Jan 2005 22:35:15 -0000 1.1 +++ SpanGradientFormatter.java 3 Feb 2005 15:26:02 -0000 @@ -43,11 +43,11 @@ public String highlightTerm(String originalText, TokenGroup tokenGroup) { if (tokenGroup.getTotalScore() == 0) - return originalText; + return encodeText(originalText); float score = tokenGroup.getTotalScore(); if (score == 0) { - return originalText; + return encodeText(originalText); } // try to size sb correctly @@ -67,7 +67,7 @@ sb.append("; "); } sb.append("\">"); - sb.append(originalText); + sb.append(encodeText(originalText)); sb.append(""); return sb.toString(); }