Dear Log,
Yup. I been writin JavaScript.
var haidify_re = /(([kgx])_)/ig; function haidify (str) { // Turns 'ak_a' => ['span', 'a', ['u','k'], 'a' ]; var last_string_starts = 0, treelet = ['span'], i ; while(1) { i = haidify_re.exec(str); if(!i) { if(last_string_starts != str.length) treelet.push( str.substr( last_string_starts ) ); break; } else { if(last_string_starts != i.index) treelet.push( str.substr( last_string_starts, i.index ) ); treelet.push( ['u', i[2] ] ); last_string_starts = i.index + i[1].length; } } return treelet; }
Interesting thing about JavaScript's RegExp system: it's pretty much a recapitulation of Perl's system, except that there's no $1 vars (instead you look in the array you get from re.exec(str)), and that the regexp cursor isn't on the string, like in Perl's pos($thing); it's instead on the RegExp object, as re.lastIndex.