All pastes #829512 Raw Edit

Smilify

public javascript v1 · immutable
#829512 ·published 2007-12-23 06:25 UTC
rendered paste body
var basePath="/smilies/";var smileys = {  ">:)"   : basePath+"smlEvil,gif",  "]:)"   : basePath+"smlEvil.gif",  ":)"    : basePath+"smlHappy.gif",  ":-)"   : basePath+"smlHappy.gif",  ":("    : basePath+"smlFrown.gif",  ":-("   : basePath+"smlFrown.gif",  ":D"    : basePath+"smlGrin.gif",  ":|"    : basePath+"smlNtl.gif",  ":-|"   : basePath+"smlNtl.gif",  ":p"    : basePath+"smlRazz.gif",  ";)"    : basePath+"smlWink.gif",  ";-)"   : basePath+"smlWink.gif",  ":o"    : basePath+"smlShock.gif"};var regex = {};var endLine = {};var startLine='<img src ="';for (key in smileys) {  var regkey=key;  regkey = regkey.replace(/</g, "&lt;");  regkey = regkey.replace(/>/g, "&gt;");  regkey = regkey.replace(/\(/g, "\\(");  regkey = regkey.replace(/\)/g, "\\)");  regkey = regkey.replace(/\[/g, "\\[");  regkey = regkey.replace(/\]/g, "\\]");  regkey = regkey.replace(/\|/g, "\\|");  var fixkey=key.replace(/\\/g, '');  regex[key] = new RegExp(' '+regkey+' ', 'gm');  endLine[key]='" align="baseline" alt="'+fixkey+'" title="'+fixkey+'" style="border:none; margin:0; padding:0;"/>';}function smilify() {  function doElement(el) {    for(var i = 0; i < el.childNodes.length; i++) {      var child=el.childNodes[i];      if(child.nodeName != '#text') doElement(child);    }    for(var i = 0; i < el.childNodes.length; i++) {      var node=el.childNodes[i];      if(node.nodeName == '#text') {        var o=node.nodeValue;        o = o.replace(/</g, "&lt;");        o = o.replace(/>/g, "&gt;");        var s=o;        for (key in smileys) s = s.replace(regex[key], ' '+startLine+smileys[key]+endLine[key]+' ');        if(s.length>1 && s!=o) {          var span = document.createElement("span");          span.innerHTML=s;          node.parentNode.replaceChild(span, node);         }      }    }  }  doElement(document.body);}