diff options
author | David A. Madore <david+git@madore.org> | 2020-12-01 19:27:25 +0100 |
---|---|---|
committer | David A. Madore <david+git@madore.org> | 2020-12-01 19:27:25 +0100 |
commit | 9159426ee11be9d363955b15e4d91f13e2595431 (patch) | |
tree | 0aa33592909c0814be89f99081f2e04dd1df64a2 /org/madore/damlengine | |
parent | d2d57b5cb65061a0fcfc7c59ab592bdf99b6e13a (diff) | |
download | damlengine-9159426ee11be9d363955b15e4d91f13e2595431.tar.gz damlengine-9159426ee11be9d363955b15e4d91f13e2595431.tar.bz2 damlengine-9159426ee11be9d363955b15e4d91f13e2595431.zip |
Update handling of "despammed" email addresses.
Support a new <d:email-plus /> element, support a "nolink" attribute
on the <d:email-despammed /> element, interchange <a> and <code>
elements on output.
Diffstat (limited to 'org/madore/damlengine')
-rw-r--r-- | org/madore/damlengine/TodoElement.java | 1 | ||||
-rw-r--r-- | org/madore/damlengine/TodoEmailAtOrDotElement.java | 14 | ||||
-rw-r--r-- | org/madore/damlengine/TodoEmailDespammedElement.java | 24 | ||||
-rw-r--r-- | org/madore/damlengine/TodoFooter.java | 4 |
4 files changed, 30 insertions, 13 deletions
diff --git a/org/madore/damlengine/TodoElement.java b/org/madore/damlengine/TodoElement.java index 0cc7880..818fe2b 100644 --- a/org/madore/damlengine/TodoElement.java +++ b/org/madore/damlengine/TodoElement.java @@ -46,6 +46,7 @@ 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("email-plus", new TodoEmailAtOrDotElement.Factory(TodoEmailAtOrDotElement.Type.PLUS)); damlFactories.put("extra-style", new TodoExtraStyleOrScriptElement.Factory(TodoStyleOrScript.Type.STYLE)); damlFactories.put("extra-script", new TodoExtraStyleOrScriptElement.Factory(TodoStyleOrScript.Type.SCRIPT)); damlFactories.put("smiley-smile", new TodoSmileyElement.Factory(TodoSmileyElement.Type.SMILE)); diff --git a/org/madore/damlengine/TodoEmailAtOrDotElement.java b/org/madore/damlengine/TodoEmailAtOrDotElement.java index 6597291..e970264 100644 --- a/org/madore/damlengine/TodoEmailAtOrDotElement.java +++ b/org/madore/damlengine/TodoEmailAtOrDotElement.java @@ -6,7 +6,12 @@ public final class TodoEmailAtOrDotElement extends TodoDefaultElement { public enum Type { AT("commercial-at", "commercial_at.png", "at sign", "arobase"), - DOT("full-stop", "full_stop.png", "dot", "point"); + DOT("full-stop", "full_stop.png", "dot", "point"), + PLUS("plus-sign", "plus_sign.png", "plus", "plus"); + // Images generated with: + // convert -size 16x20 'xc:transparent' -font 'Source-Code-Pro' -pointsize 20 -gravity South -annotate 0 '@' ~/public_html/images/commercial_at.png + // convert -size 16x20 'xc:transparent' -font 'Source-Code-Pro' -pointsize 20 -gravity South -annotate 0 '.' ~/public_html/images/full_stop.png + // convert -size 16x20 'xc:transparent' -font 'Source-Code-Pro' -pointsize 20 -gravity South -annotate 0 '+' ~/public_html/images/plus_sign.png final String charName; final String imgName; final String enName; @@ -59,16 +64,13 @@ public final class TodoEmailAtOrDotElement extends TodoDefaultElement { LangHelper.setLangNorec(span0, expLang); span0.setAttributeNS(null, "class", "replace-"+t.charName); node.getParentNode().replaceChild(span0, node); - Element span1 = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "span"); - span1.setAttributeNS(null, "class", "subreplace-"+t.charName); - span0.appendChild(span1); Element img = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "img"); img.setAttributeNS(null, "src", (ctx.gc.uriToTop==null?"":ctx.gc.uriToTop)+"images/"+t.imgName); img.setAttributeNS(null, "alt", "["+(lang.equals("fr")?t.frName:t.enName)+"]"); - img.setAttributeNS(null, "height", "15"); + img.setAttributeNS(null, "height", "20"); img.setAttributeNS(null, "width", "16"); - span1.appendChild(img); + span0.appendChild(img); } } diff --git a/org/madore/damlengine/TodoEmailDespammedElement.java b/org/madore/damlengine/TodoEmailDespammedElement.java index 9d393ed..fdeb0d5 100644 --- a/org/madore/damlengine/TodoEmailDespammedElement.java +++ b/org/madore/damlengine/TodoEmailDespammedElement.java @@ -23,24 +23,36 @@ public final class TodoEmailDespammedElement extends TodoDefaultElement { @Override public void handleNodeOnly() { Element out0 = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "code"); + Element out; + if ( node.getAttributeNS(null, "nolink").equals("") ) { + out = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "a"); + out.appendChild(out0); + out.setAttributeNS(null, "class", "despammed-address"); + } else + out = out0; String lang = LangHelper.getLangNorec(node); if ( lang != null ) - LangHelper.setLangNorec(out0, lang); - Element out1 = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "a"); - out0.appendChild(out1); - out1.setAttributeNS(null, "class", "despammed-address"); + LangHelper.setLangNorec(out, lang); + { + String classAtt = node.getAttributeNS(null, "class"); + if ( ! classAtt.equals("") ) + out0.setAttributeNS(null, "class", + "despammed-email "+classAtt); + else + out0.setAttributeNS(null, "class", "despammed-email"); + } ArrayList<Node> childList = getChildList(node); ArrayList<TodoElement> toProcess = new ArrayList<TodoElement>(childList.size()+8); for ( Node child : childList ) { - out1.appendChild(child); + out.appendChild(child); if ( child.getNodeType() == Node.ELEMENT_NODE ) { TodoElement it = TodoElement.getTodoElement((Element)child, this.ctx, this); toProcess.add(it); } } - node.getParentNode().replaceChild(out0, node); + node.getParentNode().replaceChild(out, node); this.ownerDeque.registerAtStart(toProcess); } diff --git a/org/madore/damlengine/TodoFooter.java b/org/madore/damlengine/TodoFooter.java index ca46a83..90d4f5f 100644 --- a/org/madore/damlengine/TodoFooter.java +++ b/org/madore/damlengine/TodoFooter.java @@ -38,7 +38,9 @@ public final class TodoFooter extends TodoElement { addr.appendChild(ctx.doc.createTextNode(" (")); Element email = ctx.doc.createElementNS(DamlEngine.DAML_NS, "d:email-despammed"); addr.appendChild(email); - email.appendChild(ctx.doc.createTextNode("david+www")); + email.appendChild(ctx.doc.createTextNode("david")); + email.appendChild(ctx.doc.createElementNS(DamlEngine.DAML_NS, "d:email-plus")); + email.appendChild(ctx.doc.createTextNode("www")); email.appendChild(ctx.doc.createElementNS(DamlEngine.DAML_NS, "d:email-at")); email.appendChild(ctx.doc.createTextNode("madore")); email.appendChild(ctx.doc.createElementNS(DamlEngine.DAML_NS, "d:email-dot")); |