From 8bcd7f58acd38f5d5e1731f89be4a10a79d0fdb7 Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Sat, 23 Jun 2012 22:44:40 +0530 Subject: scruf is "bzr"ed now. --- parsers/CodeBlocks.java | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 parsers/CodeBlocks.java (limited to 'parsers/CodeBlocks.java') diff --git a/parsers/CodeBlocks.java b/parsers/CodeBlocks.java new file mode 100644 index 0000000..f3adb52 --- /dev/null +++ b/parsers/CodeBlocks.java @@ -0,0 +1,42 @@ +package scruf.parsers; + +import java.util.regex.*; + +public class CodeBlocks implements Parser { + public String parse(String fileContent) { + Pattern pattern = Pattern.compile("(\\~\\~)\\n*(.+?)\\n*(\\1)", + Pattern.DOTALL); + Matcher matcher = pattern.matcher(fileContent); + LineBreak lbreak = new LineBreak(); + StringBuffer sbuffer = new StringBuffer(); + StringBuilder replacement = new StringBuilder(); + while(matcher.find()) { + replacement.delete(0,replacement.length()); + replacement.append(""); + replacement.append(quote(lbreak.parse(matcher.group(2)))); + replacement.append(""); + matcher.appendReplacement(sbuffer,replacement.toString()); + } + matcher.appendTail(sbuffer); + return sbuffer.toString(); + } + /** + * this method quotes special characters -- `\` & + * `$`, in the replacment string as they have + * special meaning. + * + */ + private String quote(String string) { + Pattern pattern = Pattern.compile("\\$|\\\\"); + Matcher matcher = pattern.matcher(string); + StringBuffer sbuffer = new StringBuffer(); + String rep; + while(matcher.find()) { + rep = "\\\\\\"+matcher.group(); + matcher.appendReplacement(sbuffer,rep); + + } + matcher.appendTail(sbuffer); + return sbuffer.toString(); + } +} \ No newline at end of file -- cgit v1.2.3