summaryrefslogtreecommitdiffstats
path: root/org
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2020-12-01 19:27:25 +0100
committerDavid A. Madore <david+git@madore.org>2020-12-01 19:27:25 +0100
commit9159426ee11be9d363955b15e4d91f13e2595431 (patch)
tree0aa33592909c0814be89f99081f2e04dd1df64a2 /org
parentd2d57b5cb65061a0fcfc7c59ab592bdf99b6e13a (diff)
downloaddamlengine-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')
-rw-r--r--org/madore/damlengine/TodoElement.java1
-rw-r--r--org/madore/damlengine/TodoEmailAtOrDotElement.java14
-rw-r--r--org/madore/damlengine/TodoEmailDespammedElement.java24
-rw-r--r--org/madore/damlengine/TodoFooter.java4
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"));