diff options
| author | David A. Madore <david+git@madore.org> | 2011-04-30 23:17:00 +0200 | 
|---|---|---|
| committer | David A. Madore <david+git@madore.org> | 2011-04-30 23:17:00 +0200 | 
| commit | 9265dd830db07fe53cad3cdb407ca16d21483e92 (patch) | |
| tree | 2cd841268489cb0d5f972a9abf432d04c655de9a | |
| parent | 89d000ad74a5599e69aa3c1c48f18a68d9aee97b (diff) | |
| download | damlengine-9265dd830db07fe53cad3cdb407ca16d21483e92.tar.gz damlengine-9265dd830db07fe53cad3cdb407ca16d21483e92.tar.bz2 damlengine-9265dd830db07fe53cad3cdb407ca16d21483e92.zip | |
Handle <extra-style> and <extra-script> elements.
| -rw-r--r-- | org/madore/damlengine/TodoElement.java | 2 | ||||
| -rw-r--r-- | org/madore/damlengine/TodoExtraStyleOrScriptElement.java | 47 | 
2 files changed, 49 insertions, 0 deletions
| diff --git a/org/madore/damlengine/TodoElement.java b/org/madore/damlengine/TodoElement.java index a5784bb..60b80c2 100644 --- a/org/madore/damlengine/TodoElement.java +++ b/org/madore/damlengine/TodoElement.java @@ -41,6 +41,8 @@ public abstract class TodoElement extends TodoItem {  	damlFactories.put("email-despammed", new TodoEmailDespammedElement.Factory());  	damlFactories.put("email-at", new TodoEmailAtOrDotElement.Factory(TodoEmailAtOrDotElement.Type.AT));  	damlFactories.put("email-dot", new TodoEmailAtOrDotElement.Factory(TodoEmailAtOrDotElement.Type.DOT)); +	damlFactories.put("extra-style", new TodoExtraStyleOrScriptElement.Factory(TodoStyleOrScript.Type.STYLE)); +	damlFactories.put("extra-script", new TodoExtraStyleOrScriptElement.Factory(TodoStyleOrScript.Type.SCRIPT));      }      protected final Element node; diff --git a/org/madore/damlengine/TodoExtraStyleOrScriptElement.java b/org/madore/damlengine/TodoExtraStyleOrScriptElement.java new file mode 100644 index 0000000..a475863 --- /dev/null +++ b/org/madore/damlengine/TodoExtraStyleOrScriptElement.java @@ -0,0 +1,47 @@ +package org.madore.damlengine; + +import java.util.regex.Pattern; +import org.w3c.dom.*; + +public final class TodoExtraStyleOrScriptElement extends TodoDefaultElement { + +    public static class Factory extends TodoElement.Factory { +	final TodoStyleOrScript.Type t; +	public Factory(TodoStyleOrScript.Type t) { +	    super(); +	    this.t = t; +	} +	@Override +	public TodoExtraStyleOrScriptElement newItem(Element node, +						     Context ctx, +						     TodoItem caller) { +	    return new TodoExtraStyleOrScriptElement(t, node, ctx, caller); +	} +    } + +    final TodoStyleOrScript.Type t; + +    public TodoExtraStyleOrScriptElement(TodoStyleOrScript.Type t, +					 Element node, +					 Context ctx, +					 TodoItem caller) { +	super(node, ctx, caller); +	this.t = t; +    } + +    @Override +    public void handleNodeOnly() { +	String content = node.getTextContent(); +	if ( t == TodoStyleOrScript.Type.SCRIPT ) +	    ctx.scriptContent.append(content); +	else +	    ctx.styleContent.append(content); +	Node ws = node.getNextSibling(); +	if ( ( ws.getNodeType() == Node.TEXT_NODE +	       || ws.getNodeType() == Node.CDATA_SECTION_NODE ) +	     && Pattern.matches("^\\s*$",((CharacterData)ws).getData()) ) +	    node.getParentNode().removeChild(ws); +	node.getParentNode().removeChild(node); +    } + +} | 
