1) {
+ r.add(tokens[i].getBlockElementNames()[j].substring(0, k));
+ } else {
+ r.add(tokens[i].getBlockElementNames()[j]);
+ }
+ }
+ r.add("hr");
+ BEs = (String[])r.toArray(new String[r.size()]);
+ }
public static void main(String[] args) {
- String text = "===Title===\n" +
- "==blubb[== was ==ein '''shice'''==...och.bla\n" +
+ String text = "===Title===\n" +
+ "==blubb== was ==ein '''shice'''==...och.bla\n" +
"* ein \n" +
- "*==test==\n" +
+ "*==test=
=\n" +
"** doppelt\n" +
"* ''tess*sst''\n" +
"*** xyz\n" +
@@ -118,29 +121,31 @@ public class wikiParser {
":doppel-blubb[= huch =]\n" +
";hier:da\n" +
";dort:und so\n" +
- ";;und:doppelt";
+ ";;und:doppelt\n\n\n\n" +
+ "[[Image:blubb|BLA]]";
// text = "[=\n=]* bla";
String t = "[=] ein fucking [= test =]-text[=,ne?!=] joa, [=alles=]wunderbar," +
"[=denk ich=] mal =]";
long l = System.currentTimeMillis();
- t = parse((args.length > 0) ? args[0] : text);
+ t = new wikiParser(null).parse((args.length > 0) ? args[0] : text);
System.out.println("parsing time: " + (System.currentTimeMillis() - l) + " ms");
System.out.println("--- --- ---");
System.out.println(t);
}
- // TODO:
- // - preParse:
- // - ~
-
- public static String parse(String text) {
+ public String parse(String text) {
Text[] tt = Text.split2Texts(text, "[=", "=]");
for (int i=0; i", "");
+ for (int i=0; i");
}
- private static String replaceBRs(String text) {
+ private String replaceBRs(String text) {
StringBuffer sb = new StringBuffer(text.length());
String[] tt = text.split("\n");
boolean replace;
@@ -175,8 +180,10 @@ public class wikiParser {
for (j=0; j")) { replace = false; break; }
sb.append(tt[i]);
- if (replace && i < tt.length - 1) sb.append("
");
- if (i < tt.length - 1) sb.append("\n");
+ if (i < tt.length - 1) {
+ if (replace) sb.append("
");
+ sb.append("\n");
+ }
}
return new String(sb);
}
@@ -193,7 +200,7 @@ public class wikiParser {
this.text = text;
this.escaped = escaped;
this.nl = newLineBefore;
- }
+ }
public String setTextPlain(String text) { return this.text = text; }
public String setText(String text) {
@@ -215,22 +222,23 @@ public class wikiParser {
public String toString() { return this.text; }
public boolean isEscaped() { return this.escaped; }
public boolean isNewLineBefore() { return this.nl; }
-
+
private static Text[] split2Texts(String text, String escapeBegin, String escapeEnd) {
if (text == null) return null;
if (text.length() < 2) return new Text[] { new Text(text, false, true) };
int startLen = escapeBegin.length();
+ int endLen = escapeEnd.length();
ArrayList r = new ArrayList();
boolean escaped = text.startsWith(escapeBegin);
if (escaped) r.add(new Text("", false, true));
int i, j = 0;
while ((i = text.indexOf((escaped) ? escapeEnd : escapeBegin, j)) > -1) {
- r.add(resolve2Text(text, escaped, (j > 0) ? j + startLen : 0, i, escapeEnd));
+ r.add(resolve2Text(text, escaped, (j > 0) ? j + ((escaped) ? startLen : endLen) : 0, i, escapeEnd));
j = i;
escaped = !escaped;
}
- r.add(resolve2Text(text, escaped, (escaped) ? j : (j > 0) ? j + startLen : 0, -1, escapeEnd));
+ r.add(resolve2Text(text, escaped, (escaped) ? j : (j > 0) ? j + endLen : 0, -1, escapeEnd));
return (Text[])r.toArray(new Text[r.size()]);
}