summaryrefslogtreecommitdiffstats
path: root/parsers/QuoteSpecialText.java
diff options
context:
space:
mode:
authorrsiddharth <rsiddharth@ninthfloor.org>2013-11-12 15:57:19 +0530
committerrsiddharth <rsiddharth@ninthfloor.org>2013-11-12 15:57:19 +0530
commit7e23efa57061f26e003939e4814af63861db7804 (patch)
treedecddaa5dea13fff95a911ceb7e587e83eb2346e /parsers/QuoteSpecialText.java
parentc10e8ce930b75e4f53d4aa627cbb7b56c44ed803 (diff)
parser/QuoteSpecialText doesn't escape `<` if it is part of a HTML tag.
I'm trying accomadate HTML markup into the scruffy markup. ;)
Diffstat (limited to 'parsers/QuoteSpecialText.java')
-rw-r--r--parsers/QuoteSpecialText.java28
1 files changed, 22 insertions, 6 deletions
diff --git a/parsers/QuoteSpecialText.java b/parsers/QuoteSpecialText.java
index cf2fcd8..5e63bc9 100644
--- a/parsers/QuoteSpecialText.java
+++ b/parsers/QuoteSpecialText.java
@@ -20,24 +20,40 @@
package scruf.parsers;
+import scruf.status.*;
import java.util.*;
import java.util.regex.*;
public class QuoteSpecialText implements Parser {
- Map<String,String> qmap;
+ private Map<String,String> qmap;
+ private DetectHTMLTag detectTag;
public QuoteSpecialText() {
qmap = new HashMap<String,String>();
qmap.put("&","&amp;");
qmap.put("<","&lt;");
- qmap.put(">","&gt;");
}
public String parse(String fileContent) {
- Pattern pattern = Pattern.compile("(\\&(\\w+|\\#\\d+)\\;)|(\\&)|(\\<)|(\\>)");
+ detectTag = new DetectHTMLTag();
+ Pattern pattern = Pattern.compile("(\\&(\\w+|\\#\\d+)\\;)|(\\<)|(\\&)");
+ Pattern loneHtmlPattern = Pattern.compile("^\\<\\w+? .*?\\/\\>", Pattern.DOTALL);
Matcher matcher = pattern.matcher(fileContent);
StringBuffer sbuffer = new StringBuffer();
- while(matcher.find() && matcher.group(1)==null) {
- matcher.appendReplacement(sbuffer,
- qmap.get(matcher.group()));
+ while(matcher.find()) {
+ if(matcher.group(1)!=null) {
+ // found HTML code, don't do anything
+ // continue.
+ continue;
+ }
+ String subString = fileContent.substring(matcher.start());
+ boolean quote = !detectTag.isHtmlTag(subString) &&
+ !detectTag.insideHtmlBlock() &&
+ !loneHtmlPattern.matcher(subString).find();
+ if(quote) {
+ matcher.appendReplacement(sbuffer,
+ qmap.get(matcher.group()));
+ }else {
+ System.out.println("Not Escaping" + subString.split(">")[0] + ">");
+ }
}
matcher.appendTail(sbuffer);
return sbuffer.toString();