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.