? 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();
}