summaryrefslogtreecommitdiffstats
path: root/parsers/DetectHTMLTag.java
diff options
context:
space:
mode:
authorrsiddharth <rsiddharth@ninthfloor.org>2013-11-15 14:00:35 +0530
committerrsiddharth <rsiddharth@ninthfloor.org>2013-11-15 14:00:35 +0530
commit88b46e3db46ff8d8754797fcff8fe9eba19f7ddd (patch)
treebf25fc8171b1cd21907491fee2d9653587e70ddf /parsers/DetectHTMLTag.java
parent821d476a4a9d778e77486027d654492e0874a699 (diff)
now, scruf does'nt wrap <p> around text inside HTML blocks in scruffy markup file.
With this, I guess, HTML can be written in scruffy marked up files.
Diffstat (limited to 'parsers/DetectHTMLTag.java')
-rw-r--r--parsers/DetectHTMLTag.java39
1 files changed, 36 insertions, 3 deletions
diff --git a/parsers/DetectHTMLTag.java b/parsers/DetectHTMLTag.java
index 562b793..4572927 100644
--- a/parsers/DetectHTMLTag.java
+++ b/parsers/DetectHTMLTag.java
@@ -22,16 +22,20 @@ package scruf.parsers;
import java.util.*;
import java.util.regex.*;
+import scruf.status.*;
public class DetectHTMLTag {
private List<String> closingHtmlTags = new ArrayList<String>();
private Pattern htmlTagPattern = Pattern.compile("^\\<((\\w+?).*?)\\>.*?(\\<\\/\\2\\>)",
Pattern.DOTALL);
+ private String lastHtmlBlock = null;
private boolean insideHtmlBlock = false;
+ private boolean htmlInScruffy = false;
public boolean isHtmlTag(String text) {
Matcher htmlTagMatcher = htmlTagPattern.matcher(text);
if(htmlTagMatcher.find()) {
+ lastHtmlBlock = htmlTagMatcher.group();
closingHtmlTags.add(htmlTagMatcher.group(3));
insideHtmlBlock = true;
return true;
@@ -43,16 +47,45 @@ public class DetectHTMLTag {
private boolean isClosingHtmlTag(String text) {
for(String closingTag: closingHtmlTags) {
if(text.startsWith(closingTag)) {
+ lastHtmlBlock = closingTag;
closingHtmlTags.remove(closingTag);
+ if(closingHtmlTags.isEmpty())
+ insideHtmlBlock = false;
return true;
}
}
- if(closingHtmlTags.isEmpty())
- insideHtmlBlock = false;
return false;
}
+ public boolean isHtmlInScruffy(String text) {
+ Integer blankLineCounter;
+
+ if(isHtmlTag(text)) {
+ Pattern qText = Pattern.compile("\\Q"+lastHtmlBlock+"\\E");
+ htmlInScruffy = qText.matcher(PresentFile.fileContent).find();
+
+ Pattern pBlankLine = Pattern.compile("\\n\\n");
+ Matcher mBlankLine = pBlankLine.matcher(lastHtmlBlock);
+ blankLineCounter = 0;
+
+ while(mBlankLine.find())
+ ++blankLineCounter;
+
+ if(blankLineCounter == 0) {
+ closingHtmlTags.clear();
+ resetEverything();
+ }
+ }
+ return insideHtmlBlock && htmlInScruffy;
+ }
+
public boolean insideHtmlBlock() {
return insideHtmlBlock;
}
-}
+
+ public void resetEverything() {
+ insideHtmlBlock = false;
+ htmlInScruffy = false;
+ lastHtmlBlock = null;
+ }
+} \ No newline at end of file