I was looking at Markdown parsers written in JS, and found marked. Ever curious about how different people tackle parsers, I was completely blown away by the elegance of its code. One function in particular stood out:
It's basically just a shortcut to String.prototype.replace, but the syntax that it enables is beautiful:
Looking through the source history, at one point it was literally just sequential calls to String.prototype.replace:
I think it's very interesting to study how code evolves over time.
As an experiment, I applied that replace function to the regex I wrote for MiniVash. For a one-shot use like this, breaking the regex up is not worth the size increase. However the comprehension and readability improve immensely:
var re = {};
re.identifier = /[a-zA-Z]+?[a-zA-Z0-9]/;
re.inExp = /[a-zA-Z0-9'".()=?:]/;
re.pAccess = /(?:[.]+(?!\s|$|"|'|\?))/;
re.exp =
/(?:identifier*(?:pAccess|(?:\[inExp+\])|(?:\(inExp*\)))*)/;
re.keyword =
/do|for|function|(?:exp+\(\s*function)|if|switch|try|while|with/;
re.combined = /(@(?!keyword)(?:exp+))|(@\(?:.*?\)@)/;
// prettier-ignore
re.combined = replace(re.combined, 'g')
(/keyword/g, re.keyword)
(/exp/g, re.exp)
(/identifier/g, re.identifier)
(/pAccess/g, re.pAccess)
(/inExp/g, re.inExp)
();
Contact