Escape quotes bug
Example from docs with same quote interpolation
div(placeholder="{{ 'I\'m best of the best' | translate }}")
get me error
Trace: SyntaxError: Unexpected token, when trying to parse `{{ 'I'm best of the best' | translate }}`
I would like to know why I am getting errorsfor this case. Thanks
PS: I think solution, but problem from above is a bug.
My solution:
- Excape self-made
placeholder="{{ "I'm best of the best" | translate }}"
- Auto escape by pug
placeholder=`{{ "I\'m best of the best" | translate }}`
BUT My solution not working as needed if we have 2 types of quotes
placeholder=`{{ "I\'m best of the \"best\"" | translate }}`
That extract
msgid "I'm best of the "best""
instead of
msgid "I'm best of the \"best\""
How to fix this issues? Thanks!
My tests for translate attributes in pug
- default (with escape enabled (=)) Works FINE
div(content= `{{ "${meta.description}" | t }}`)
- default (with escape disabled (!=)) THIS CAUSE ALWAYS WRONG output
div(content!= `{{ "${meta.description}" | t }}`)
If variable contains interpolated SINGLE quotes ' Code below will throw
SyntaxError: Unexpected token, when trying to parse `{{ 'te434343x'st' | t }}`
div(content=`{{ '${meta.description}' | t }}`)
div(content!=`{{ '${meta.description}' | t }}`)
If we use for code above DOUBLE quotes, error will disappear, but extraction output will be WRONG with unescaped output(!=).
div(content!=`{{ "${meta.description}" | t }}`)
Recap: If string has interpolated single quotes('), SyntaxError will occur for both (unescaped & escaped) assignments, if that wrapped also in a SINGLE quote! USE double quote with escaped mode (=);
div(content= `{{ "${meta.description}" | t }}`)