From e3ac578e74c3197d7e4bb03e10cd5756b9405e76 Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Fri, 26 Aug 2011 15:51:50 +0200 Subject: Handle d:wref attribute (incompletely). --- org/madore/damlengine/TodoAttr.java | 1 + org/madore/damlengine/TodoWrefAttr.java | 45 +++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 org/madore/damlengine/TodoWrefAttr.java diff --git a/org/madore/damlengine/TodoAttr.java b/org/madore/damlengine/TodoAttr.java index f510cf9..b88dc53 100644 --- a/org/madore/damlengine/TodoAttr.java +++ b/org/madore/damlengine/TodoAttr.java @@ -18,6 +18,7 @@ public abstract class TodoAttr extends TodoItem { static { damlAttrFactories = new HashMap(); damlAttrFactories.put("xempty", new TodoXemptyAttr.Factory()); + damlAttrFactories.put("wref", new TodoWrefAttr.Factory()); } protected final Attr attr; diff --git a/org/madore/damlengine/TodoWrefAttr.java b/org/madore/damlengine/TodoWrefAttr.java new file mode 100644 index 0000000..5737577 --- /dev/null +++ b/org/madore/damlengine/TodoWrefAttr.java @@ -0,0 +1,45 @@ +package org.madore.damlengine; + +import java.util.regex.Pattern; +import java.util.regex.Matcher; +import org.w3c.dom.*; + +public class TodoWrefAttr extends TodoAttr { + + public static class Factory extends TodoAttr.Factory { + @Override + public TodoWrefAttr newItem(Attr attr, Element owner, + Context ctx, + TodoItem caller) { + return new TodoWrefAttr(attr, owner, ctx, caller); + } + } + + public TodoWrefAttr(Attr attr, Element owner, + Context ctx, + TodoItem caller) { + super(attr, owner, ctx, caller); + } + + @Override + public void handle() { + String wrefStr = attr.getValue(); + Matcher wrefMatcher = Pattern.compile("^\\#d\\.(\\d{4})-(\\d{2})-(\\d{2})\\.(\\d{4})(|\\..*)$").matcher(wrefStr); + if ( ! wrefMatcher.matches() ) + throw new IllegalArgumentException("wref attribute ("+wrefStr+") must be of the form #d.YYYY-MM-DD.NNNN[.xxx]"); + String wrefYearStr = wrefMatcher.group(1); + String wrefMonthStr = wrefMatcher.group(2); + String wrefDayStr = wrefMatcher.group(3); + String wrefNumberStr = wrefMatcher.group(4); + String wrefSupplementStr = wrefMatcher.group(5); + String targetFile = ""; + if ( true ) + targetFile = wrefYearStr + "-" + wrefMonthStr + ".html"; + String targetFragment = "d." + wrefYearStr + "-" + wrefMonthStr + + "-" + wrefDayStr + "." + wrefNumberStr + wrefSupplementStr; + String target = targetFile + "#" + targetFragment; + this.owner.removeAttribute(this.attr.getName()); + this.owner.setAttributeNS(null, "href", target); + } + +} -- cgit v1.2.3