Archive for Februar, 2011

Testing XSLT

Montag, Februar 14th, 2011

Note:
The Firefox Add-On NoScript is blocking XSLT transformations – on local and remote files.
This implies, that you should disable NoScript if you want to see client side XSLT transformations.

JavaScript code snippets

Dienstag, Februar 1st, 2011

Im Blog von Struppi bin ich über zwei JavaScript Code-Snippets gestolpert, die doch noch verbessert werden konnten.
Hier meine Varianten:

stripHTML entfernt alle HTML tags in einem String. Es nutzt dabei die non-greedy RegExp .*? und kommt im replacement-part ohne function aus.
Ausserdem erfasst es tag-deletion und „“-deletion in einem Rutsch und paart die Hochkommata korrekt. Ansonsten könnte <tag test="hallo'>foo<'"/> in die Hose gehen.
Zusätzlich habe ich noch html-Kommentare entfernt.

function stripHTML(str){
    return str.replace(/<[^!](?:[^>"']|"[^"]*"|'[^"]*')*>|<!--.*?-->/g,'');
};

Als Erweiterung könnte auch noch script code entfernt werden:

function stripHTML(str){
    return str.replace(/<script\b(?:[^>"']|"[^"]*"|'[^"]*')*>.*?<\/script\s*>
                        |<[^!](?:[^>"']|"[^"]*"|'[^"]*')*>|<!--.*?-->/g,'');
};

Für die Funktion trim schlage ich folgenden Einzeiler vor:

function trim(str) {
    return str.replace(/\s+/g, ' ').replace(/^ | $/g, '');
}

Das erste replace lässt alle Leerzeichen zusammenschrumpfen, geht dabei aber mit Zeilenumbrüchen behutsamer vor (Bei deiner Variante, kann es sein, dass das letzte Wort in einer Zeile und das erste in der nächsten miteinander verbunden werden.)
Das zweite replace entfernt ein eventuelles Leerzeichen am Anfang und Ende vom String.