Code: rot13 mit AMP Makros

Mittwoch, 12.Dez 2018

AMP lässt bekanntlich kein eigenes Javascript zu, unangenehm wenn bei einer bestehenden Website rot13 für das Verstecken von E-Mail Adressen verwendet wird, mit amp-bind-macro geht aber was

Eigenes Javascript straft der AMP Validator sofort mit einer Meldung ab, mit dem amp-bind-macro Tag steht ein kleines Werkzeug zur Verfügung zumindest teilweise Javascript Funktionen einzubauen. Die rot13 Funktion kann zwar nicht so effizient, wie mit nativem Javascript abgebildet werden, aber immerhin:

<amp-bind-macro id="rot13char" arguments="c"
   expression="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.charAt('NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm'.indexOf(c))"/>

<amp-bind-macro id="rot13isChar" arguments="c"
   expression="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.indexOf(c) != -1"/>

<amp-bind-macro id="rot13" arguments="str"
   expression="str.split('').map((char,ind)=> rot13isChar(char) ? rot13char(char) : char).join('')"/>

Die Sprachelemente, die verwendet werden dürfen, sind seitens AMP limitiert, also z.B. kein regex, deshalb hier der Umweg mit 3 Makros. Es ist natürlich die Frage, in wie ferne es Sinn macht Sprachelemente so zu beschränken, dass bestimmte Funktionen nurmehr mit ineffizientem Code umgesetzt werden können, aber das würde vermutlich in einer Grundsatzdiskussion über die Daseinsberechtigung von AMP selbst ausarten.

Zurück zur Übersicht