summaryrefslogtreecommitdiffstats
path: root/org/madore/damlengine/TodoTitleElement.java
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2010-10-10 00:29:18 +0200
committerDavid A. Madore <david+git@madore.org>2010-10-10 00:29:18 +0200
commitfab2da0e75bc84e0a811c31a8082e4b00769b5e5 (patch)
treee9f459897c3367b23060b263fed3098b1835ba1c /org/madore/damlengine/TodoTitleElement.java
parentbfb0b79e1682f323cb29fe89f0d1a27dcaa44d68 (diff)
downloaddamlengine-fab2da0e75bc84e0a811c31a8082e4b00769b5e5.tar.gz
damlengine-fab2da0e75bc84e0a811c31a8082e4b00769b5e5.tar.bz2
damlengine-fab2da0e75bc84e0a811c31a8082e4b00769b5e5.zip
Handle title and subtitle.
Diffstat (limited to 'org/madore/damlengine/TodoTitleElement.java')
-rw-r--r--org/madore/damlengine/TodoTitleElement.java53
1 files changed, 53 insertions, 0 deletions
diff --git a/org/madore/damlengine/TodoTitleElement.java b/org/madore/damlengine/TodoTitleElement.java
new file mode 100644
index 0000000..8c28ee9
--- /dev/null
+++ b/org/madore/damlengine/TodoTitleElement.java
@@ -0,0 +1,53 @@
+package org.madore.damlengine;
+
+import java.util.ArrayList;
+import java.util.regex.Pattern;
+import org.w3c.dom.*;
+
+public final class TodoTitleElement extends TodoDefaultElement {
+
+ public static class Factory extends TodoElement.Factory {
+ @Override
+ public TodoTitleElement newItem(Element node,
+ Context ctx,
+ TodoItem caller) {
+ return new TodoTitleElement(node, ctx, caller);
+ }
+ }
+
+ public TodoTitleElement(Element node,
+ Context ctx,
+ TodoItem caller) {
+ super(node, ctx, caller);
+ }
+
+ @Override
+ public void handleNodeOnly() {
+ if ( ctx.title != null )
+ throw new IllegalArgumentException("attempting to redefine title");
+ ctx.title = ctx.doc.createDocumentFragment();
+ ctx.titleStr = node.getTextContent();
+ ctx.titleLang = LangHelper.getLangRec(node);
+ String lang = LangHelper.getLangNorec(node);
+ ArrayList<Node> childList = getChildList(node);
+ for ( Node child : childList ) {
+ ctx.title.appendChild(child);
+ }
+ Element tit = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "title");
+ if ( lang != null )
+ LangHelper.setLangNorec(tit, lang);
+ node.getParentNode().replaceChild(tit, node);
+ tit.appendChild(ctx.doc.createTextNode(ctx.titleStr));
+ Element meta = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "meta");
+ if ( lang != null )
+ LangHelper.setLangNorec(meta, lang);
+ meta.setAttributeNS(null, "name", "Title");
+ meta.setAttributeNS(null, "content", ctx.titleStr);
+ if ( tit.getNextSibling() != null )
+ tit.getParentNode().insertBefore(meta, tit.getNextSibling());
+ else
+ tit.getParentNode().appendChild(meta);
+ tit.getParentNode().insertBefore(ctx.doc.createTextNode("\n"), meta);
+ }
+
+}