X-Git-Url: http://git.megacz.com/?p=org.ibex.xt.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fxt%2FTemplate.java;fp=src%2Forg%2Fibex%2Fxt%2FTemplate.java;h=36611ccb7e25869b28727acb922cfd3b8dbd8732;hp=f8c4e8d2c31b65fd4ac6df7d3419c55d47f71c66;hb=994545b936bd65563d41f5eea8bb494ffd3779e4;hpb=895124c1bfbfb35522477936af38d250bcc65f4c diff --git a/src/org/ibex/xt/Template.java b/src/org/ibex/xt/Template.java index f8c4e8d..36611cc 100644 --- a/src/org/ibex/xt/Template.java +++ b/src/org/ibex/xt/Template.java @@ -109,6 +109,7 @@ public class Template extends Node.Stream.Filter implements Node.Stream.Functor transform(n, scope); return graft((Node.Stream.Functor)("true".equals(n.attr("if"))?new DropTag():new DropAll()), n).upstreamRead(n); case "js": return graft(new JsTag(scope), n).upstreamRead(n); + case "wiki": return graft(new WikiTag(n, scope), n).upstreamRead(n); case "foreach": return graft(new ForEach(n, scope), n).upstreamRead(n); case "children": if (children == null) return true; @@ -164,6 +165,28 @@ public class Template extends Node.Stream.Filter implements Node.Stream.Functor } } + private class WikiTag implements Node.Stream.Functor { + public WikiTag(Node n, Scope s) { } + public Node.Stream wrap(final Node.Stream kids) { + return new Node.Stream() { + public boolean _read(Node n) { + if (!kids.read(n)) return false; + System.out.println("kids.cdata == " + n.cdata); + if (n.cdata == null) return true; + + // FIXME: links, code, and math + n.cdata = n.cdata.replaceAll("__([^_]+)__", "$1"); + n.cdata = n.cdata.replaceAll("\\~\\~([^\\~]+)\\~\\~", "$1"); + n.cdata = n.cdata.replaceAll("\\*\\*([^\\*]+)\\*\\*", "$1"); + n.cdata = n.cdata.replaceAll("==([^=]+)==", "

$1

"); + n.cdata = n.cdata.replaceAll("=

([^=]+)

=", "

$1

"); + n.cdata = n.cdata.replaceAll("=

([^=]+)

=", "

$1

"); + n.cdata = n.cdata.replaceAll("(\n|\r\n)[ ]*(\n|\r\n)", "\n

\n"); + return true; + } }; + } + } + private class InputTag implements Node.Stream.Functor { final String fieldName; public InputTag(String fieldName) { this.fieldName = fieldName; }