Version: 5.5.1
I suspect this is a known limitation and/or expected behaviour, but it was surprising! For context, I'm building a prettier plugin that uses the htmljs-parser directly to format Marko files.
Details
There are two related issues:
- Comments within an open tag are not emitted in
onComment. They are included in the value of onAttrValue.
- When parsing a tag with a comment before the first attribute, the parser does not emit the comment (as far as I can tell).
<meta
// I disappear when consumed by the htmljs-parser.
name="viewport"
>
onComment is never called, and there is no attribute value, so the comment is removed if processed by dependent tooling like the marko compiler (and therefore marko-plugin-prettier).
Using HTML-style comments also throws an error because the parser expects a TypeScript type argument.
<meta
<!-- I throw Unexpected types argument -->
name="viewport"
>
While after the attribute, the value is included in onAttrValue of the previous attribute.
<meta
name="viewport"
// I'm included in name="viewport".
>
it parsed as an onAttrValue with a value of:
"viewport"
// I'm included in name="viewport".
I would have expected two values emitted, onAttrValue of "viewport" and onComment with // I'm included in name="viewport"..
Version: 5.5.1
I suspect this is a known limitation and/or expected behaviour, but it was surprising! For context, I'm building a prettier plugin that uses the
htmljs-parserdirectly to format Marko files.Details
There are two related issues:
onComment. They are included in the value ofonAttrValue.onCommentis never called, and there is no attribute value, so the comment is removed if processed by dependent tooling like the marko compiler (and thereforemarko-plugin-prettier).Using HTML-style comments also throws an error because the parser expects a TypeScript type argument.
While after the attribute, the value is included in
onAttrValueof the previous attribute.it parsed as an
onAttrValuewith a value of:I would have expected two values emitted,
onAttrValueof"viewport"andonCommentwith// I'm included in name="viewport"..