literalizer
literalizer copied to clipboard
fix how template literal is processed
There are quite a few problems with the existing implementation regarding template literals. Off the top of my head:
- the way it looks for the ending
after starting a template literal is wrong. Instead of just looking for the next, it should count them in a stack, much like matching{ }or( )pairs would be done. - Template literals can have other template literals inside their expressions.
- Each
${inside the literal should break out and just create elements of text (code), but must track{ }pairs so it can identify the ending}, and go back into template literal mode, resuming its search for either${or ```. - The tagged identifier before a template literal, if present, should be included as part of the first template literal element in the stream. heuristic: preceding whitespace then identifier.