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/BackButton.java | 22 ++++++++++++++++++++++ parsers/CodeBlocks.java | 42 ++++++++++++++++++++++++++++++++++++++++++ parsers/DocumentName.java | 18 ++++++++++++++++++ parsers/Footer.java | 17 +++++++++++++++++ parsers/Header.java | 37 +++++++++++++++++++++++++++++++++++++ parsers/Headings.java | 21 +++++++++++++++++++++ parsers/Images.java | 20 ++++++++++++++++++++ parsers/LineBreak.java | 16 ++++++++++++++++ parsers/Links.java | 17 +++++++++++++++++ parsers/NullIt.java | 15 +++++++++++++++ parsers/Paragraphs.java | 19 +++++++++++++++++++ parsers/Parser.java | 24 ++++++++++++++++++++++++ parsers/ParserList.java | 31 +++++++++++++++++++++++++++++++ parsers/WordDecoration.java | 31 +++++++++++++++++++++++++++++++ 14 files changed, 330 insertions(+) create mode 100644 parsers/BackButton.java create mode 100644 parsers/CodeBlocks.java create mode 100644 parsers/DocumentName.java create mode 100644 parsers/Footer.java create mode 100644 parsers/Header.java create mode 100644 parsers/Headings.java create mode 100644 parsers/Images.java create mode 100644 parsers/LineBreak.java create mode 100644 parsers/Links.java create mode 100644 parsers/NullIt.java create mode 100644 parsers/Paragraphs.java create mode 100644 parsers/Parser.java create mode 100644 parsers/ParserList.java create mode 100644 parsers/WordDecoration.java (limited to 'parsers') diff --git a/parsers/BackButton.java b/parsers/BackButton.java new file mode 100644 index 0000000..e20b640 --- /dev/null +++ b/parsers/BackButton.java @@ -0,0 +1,22 @@ +package scruf.parsers; + +import java.io.*; +import scruf.io.*; + +public class BackButton implements Parser { + // this method doesn't modify the filContent. + public String parse(String fileContent) { + StringBuilder button = new StringBuilder(); + button.append("\n
\n"); + button.append(" home "); + }else { + button.append("./\"> back "); + } + button.append("\n"); + button.append("
"); + PresentFile.backButton = button.toString(); + return fileContent; + } +} \ No newline at end of file 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 diff --git a/parsers/DocumentName.java b/parsers/DocumentName.java new file mode 100644 index 0000000..d0360c1 --- /dev/null +++ b/parsers/DocumentName.java @@ -0,0 +1,18 @@ +package scruf.parsers; + +import java.io.*; +import scruf.io.*; + +public class DocumentName implements Parser { + public String parse(String fileContent) { + BufferedReader read = + new BufferedReader(new StringReader(fileContent)); + try { + PresentFile.name = read.readLine(); + }catch(IOException e) { + System.err.println("Error reading string "+e); + } + fileContent = new NullIt().nullIt(fileContent,PresentFile.name); + return fileContent; + } +} \ No newline at end of file diff --git a/parsers/Footer.java b/parsers/Footer.java new file mode 100644 index 0000000..4ff50ed --- /dev/null +++ b/parsers/Footer.java @@ -0,0 +1,17 @@ +package scruf.parsers; + +import java.util.regex.*; +import scruf.io.*; +public class Footer implements Parser { + public String parse(String fileContent) { + Pattern pattern = Pattern.compile("\\-{70}\\n(.+)\\n\\-{70}"); + Matcher matcher = pattern.matcher(fileContent); + StringBuffer sbuffer = new StringBuffer(); + while(matcher.find()) { + PresentFile.footer = ""; + fileContent = new NullIt().nullIt(fileContent,matcher.group()); + } + + return fileContent; + } +} \ No newline at end of file diff --git a/parsers/Header.java b/parsers/Header.java new file mode 100644 index 0000000..99114ae --- /dev/null +++ b/parsers/Header.java @@ -0,0 +1,37 @@ +package scruf.parsers; + +import scruf.io.*; + +public class Header implements Parser { + + private String fileContent; + private StringBuilder sbuilder; + + public String parse(String fileContent) { + + sbuilder = new StringBuilder(); + + // Embed necessay headers. + sbuilder.append(" \n"); + sbuilder.append(" \n"); + sbuilder.append(" \n"); + sbuilder.append(""); + sbuilder.append(PresentFile.name); + sbuilder.append(""); + sbuilder.append(" \n"); + sbuilder.append(" \n"); + // insert File Content. + sbuilder.append(fileContent); + // insert back button. + sbuilder.append(PresentFile.backButton); + // Close body + sbuilder.append("\n\n"); + if(PresentFile.footer!=null) { + sbuilder.append(PresentFile.footer); + } + sbuilder.append("\n"); + + return sbuilder.toString(); + } + +} \ No newline at end of file diff --git a/parsers/Headings.java b/parsers/Headings.java new file mode 100644 index 0000000..b23966c --- /dev/null +++ b/parsers/Headings.java @@ -0,0 +1,21 @@ +package scruf.parsers; + +import java.util.regex.*; + +public class Headings implements Parser { + public String parse(String fileContent) { + int size; + Pattern pattern = Pattern.compile("(\\={10,})\\n(.+?)\\n(\\1)"); + Matcher matcher = pattern.matcher(fileContent); + StringBuffer sbuffer = new StringBuffer(); + while(matcher.find()) { + size = (matcher.group(1).length())/10; + matcher.appendReplacement(sbuffer, + " "+ + "$2 "+ + ""); + } + matcher.appendTail(sbuffer); + return sbuffer.toString(); + } +} diff --git a/parsers/Images.java b/parsers/Images.java new file mode 100644 index 0000000..c55018a --- /dev/null +++ b/parsers/Images.java @@ -0,0 +1,20 @@ +package scruf.parsers; + +import java.util.regex.*; + +public class Images implements Parser { + public String parse(String fileContent) { + Pattern pattern = Pattern.compile("\\{\\{(.+\\.(png|jpg))\\|(.+)\\}\\}"); + Matcher matcher = pattern.matcher(fileContent); + StringBuffer sbuffer = new StringBuffer(); + StringBuilder replacementString = new StringBuilder(); + replacementString.append("
"); + replacementString.append("\"$3\""); + replacementString.append("
"); + while(matcher.find()) { + matcher.appendReplacement(sbuffer,replacementString.toString()); + } + matcher.appendTail(sbuffer); + return sbuffer.toString(); + } +} \ No newline at end of file diff --git a/parsers/LineBreak.java b/parsers/LineBreak.java new file mode 100644 index 0000000..09aee07 --- /dev/null +++ b/parsers/LineBreak.java @@ -0,0 +1,16 @@ +package scruf.parsers; + +import java.util.regex.*; + +public class LineBreak implements Parser { + public String parse(String fileContent) { + Pattern pattern = Pattern.compile("\\n"); + Matcher matcher = pattern.matcher(fileContent); + StringBuffer sbuffer = new StringBuffer(); + while(matcher.find()) { + matcher.appendReplacement(sbuffer,"
"); + } + matcher.appendTail(sbuffer); + return sbuffer.toString(); + } +} \ No newline at end of file diff --git a/parsers/Links.java b/parsers/Links.java new file mode 100644 index 0000000..caa258d --- /dev/null +++ b/parsers/Links.java @@ -0,0 +1,17 @@ +package scruf.parsers; + +import java.util.regex.*; + +public class Links implements Parser { + public String parse(String fileContent) { + Pattern pattern = Pattern.compile("\\[\\[(.+?)\\|(.+?)\\]\\]"); + Matcher matcher = pattern.matcher(fileContent); + StringBuffer sbuffer = new StringBuffer(); + String replacementString = "$2"; + while(matcher.find()) { + matcher.appendReplacement(sbuffer,replacementString); + } + matcher.appendTail(sbuffer); + return sbuffer.toString(); + } +} \ No newline at end of file diff --git a/parsers/NullIt.java b/parsers/NullIt.java new file mode 100644 index 0000000..29fdf00 --- /dev/null +++ b/parsers/NullIt.java @@ -0,0 +1,15 @@ +package scruf.parsers; + +import java.util.regex.*; + +public class NullIt { + public String nullIt(String content,String regex) { + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(content); + while(matcher.find()) { + content = matcher.replaceFirst(""); + break; + } + return content; + } +} \ No newline at end of file diff --git a/parsers/Paragraphs.java b/parsers/Paragraphs.java new file mode 100644 index 0000000..0d6fda6 --- /dev/null +++ b/parsers/Paragraphs.java @@ -0,0 +1,19 @@ +package scruf.parsers; + +import java.util.regex.*; + +public class Paragraphs implements Parser { + + public String parse(String fileContent) { + + Pattern pattern = Pattern.compile("((^.+$)\\n)+",Pattern.MULTILINE); + Matcher matcher = pattern.matcher(fileContent); + StringBuilder sbuilder = new StringBuilder(); + while(matcher.find()) { + sbuilder.append("\n

\n"); + sbuilder.append(matcher.group()); + sbuilder.append("

\n"); + } + return sbuilder.toString(); + } +} \ No newline at end of file diff --git a/parsers/Parser.java b/parsers/Parser.java new file mode 100644 index 0000000..7bddbdc --- /dev/null +++ b/parsers/Parser.java @@ -0,0 +1,24 @@ +/*+ + * Copyright (C) 2012-2013 rsiddharth + * email me : rsiddharth@ninthfloor.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package scruf.parsers; + +public interface Parser { + public String parse(String fileContent); +} + diff --git a/parsers/ParserList.java b/parsers/ParserList.java new file mode 100644 index 0000000..11e3de0 --- /dev/null +++ b/parsers/ParserList.java @@ -0,0 +1,31 @@ +package scruf.parsers; + +import java.util.*; + +public class ParserList { + private List parsers; + public ParserList() { + parsers = new ArrayList(); + // add Parsers. + parsers.add(new DocumentName()); + parsers.add(new WordDecoration()); + parsers.add(new CodeBlocks()); + parsers.add(new Headings()); + parsers.add(new Paragraphs()); + parsers.add(new Links()); + parsers.add(new Images()); + parsers.add(new Footer()); + parsers.add(new BackButton()); + parsers.add(new Header()); + } + public List list() { + return new ArrayList(parsers); + } + public static void main(String[] args) { + ParserList pl = new ParserList(); + List parser = pl.list(); + parser.remove(0); + for(Parser p:pl.list()) + System.out.println(p); + } +} diff --git a/parsers/WordDecoration.java b/parsers/WordDecoration.java new file mode 100644 index 0000000..b2df37e --- /dev/null +++ b/parsers/WordDecoration.java @@ -0,0 +1,31 @@ +package scruf.parsers; + +import java.util.regex.*; +import java.util.*; +import java.io.*; +import scruf.io.*; + +public class WordDecoration implements Parser { + private HashMap tagMap; + public WordDecoration() { + tagMap = new HashMap(); + tagMap.put("''","$6"); + tagMap.put("__","$6"); + tagMap.put("'''","$6"); + tagMap.put("%%%","
$6
"); + } + public String parse(String fileContent) { + Pattern pattern = + Pattern.compile("((\\'\\'\\')|(\\_\\_)|(\\'\\')|(\\%\\%\\%))(.+?)((\\2)|(\\3)|(\\4)|(\\5))", + Pattern.DOTALL); + Matcher matcher = pattern.matcher(fileContent); + StringBuffer sbuffer = new StringBuffer(); + String replacement; + while(matcher.find()) { + replacement = tagMap.get(matcher.group(1)); + matcher.appendReplacement(sbuffer,replacement); + } + matcher.appendTail(sbuffer); + return sbuffer.toString(); + } +} \ No newline at end of file -- cgit v1.2.3