From 14f3499cd96d45bad081823e95a2bfecb7ae1474 Mon Sep 17 00:00:00 2001 From: Dylan Piercey Date: Tue, 21 Jun 2022 15:33:32 -0700 Subject: [PATCH] feat: add new parser events and rename 'onTagName' to 'onOpenTagName'. (#114) --- .changeset/two-points-guess.md | 7 + README.md | 54 +- .../argument-and-params.expected.txt | 82 +- ...rgument-attr-extra-whitespace.expected.txt | 16 +- .../argument-attr-multiple.expected.txt | 11 +- .../__snapshots__/argument-attr.expected.txt | 16 +- .../argument-tag-attr.expected.txt | 20 +- .../argument-tag-complex.expected.txt | 14 +- ...argument-tag-extra-whitespace.expected.txt | 14 +- .../argument-tag-multiple.expected.txt | 9 +- .../argument-tag-nested-parens.expected.txt | 8 +- .../__snapshots__/argument-tag.expected.txt | 32 +- .../__snapshots__/attr-bound.expected.txt | 116 +-- .../attr-comma-multiline.expected.txt | 2 +- .../attr-complex-functions.expected.txt | 10 +- .../attr-complex-instanceof.expected.txt | 31 +- .../__snapshots__/attr-complex.expected.txt | 26 +- .../attr-escape-characters.expected.txt | 16 +- .../attr-escaped-dollar.expected.txt | 16 +- .../__snapshots__/attr-grouped-2.expected.txt | 2 +- .../__snapshots__/attr-grouped-3.expected.txt | 2 +- .../__snapshots__/attr-grouped-4.expected.txt | 2 +- .../attr-grouped-multiple.expected.txt | 2 +- .../__snapshots__/attr-grouped.expected.txt | 2 +- .../attr-inc-and-dec.expected.txt | 4 +- .../attr-inconsistent-commas.expected.txt | 28 +- .../attr-int-and-id.expected.txt | 22 +- .../attr-literal-false.expected.txt | 16 +- .../attr-literal-null.expected.txt | 16 +- .../attr-literal-numbers.expected.txt | 82 +- .../attr-literal-regex.expected.txt | 59 +- ...-literal-string-double-quotes.expected.txt | 16 +- ...-literal-string-single-quotes.expected.txt | 16 +- .../attr-literal-true.expected.txt | 16 +- .../attr-literal-undefined.expected.txt | 16 +- .../attr-method-shorthand.expected.txt | 119 +-- .../attr-multi-line-comment.expected.txt | 24 +- .../attr-multi-line-string.expected.txt | 14 +- .../attr-nested-literal-regex.expected.txt | 11 +- .../attr-no-value-self-closed.expected.txt | 7 +- .../__snapshots__/attr-no-value.expected.txt | 14 +- .../attr-non-literal.expected.txt | 36 +- .../attr-object-expressions.expected.txt | 14 +- .../attr-operators-newline-after.expected.txt | 586 +++++++------ ...attr-operators-newline-before.expected.txt | 437 +++++----- .../attr-operators-space-after.expected.txt | 488 ++++++----- .../attr-operators-space-before.expected.txt | 578 +++++++------ .../attr-operators-space-between.expected.txt | 782 ++++++++++-------- .../attr-simple-expression.expected.txt | 18 +- .../__snapshots__/attr-spread.expected.txt | 71 +- ...r-unenclosed-whitespace-minus.expected.txt | 2 +- ...sed-whitespace-multiple-attrs.expected.txt | 44 +- ...ttr-unenclosed-whitespace-odd.expected.txt | 22 +- .../attr-unenclosed-whitespace.expected.txt | 22 +- .../attr-value-self-closed.expected.txt | 11 +- ...tr-value-single-quote-escaped.expected.txt | 2 +- .../attr-value-string-concat.expected.txt | 16 +- .../attr-value-typeof-comma.expected.txt | 2 +- ...-value-typeof-no-space-prefix.expected.txt | 2 +- .../attr-value-typeof.expected.txt | 2 +- .../attr-value-void.expected.txt | 2 +- ...ens-and-double-quoted-strings.expected.txt | 16 +- ...ens-and-single-quoted-strings.expected.txt | 16 +- ...th-right-angle-bracket-parens.expected.txt | 18 +- ...attr-with-right-angle-bracket.expected.txt | 18 +- .../attr-without-delimiters.expected.txt | 16 +- .../backtick-string-eof.expected.txt | 7 +- ...tick-string-nested-with-space.expected.txt | 16 +- ...ck-string-placeholder-newline.expected.txt | 14 +- .../backtick-string.expected.txt | 14 +- .../__snapshots__/cdata-2.expected.txt | 10 +- .../__snapshots__/cdata-pos.expected.txt | 12 +- .../cdata/__snapshots__/cdata.expected.txt | 13 +- .../comma-ends-attr-operators.expected.txt | 22 +- ...ommas-require-all-attrs-first.expected.txt | 23 +- ...commas-require-all-attrs-last.expected.txt | 23 +- .../comment-concise-js-block.expected.txt | 2 +- .../comment-concise-js-line.expected.txt | 2 +- .../comments-within-open-tag.expected.txt | 22 +- .../complex-attr-name.expected.txt | 17 +- .../__snapshots__/complex.expected.txt | 34 +- ...contentplaceholder-html-start.expected.txt | 12 +- .../__snapshots__/css-calc.expected.txt | 2 +- .../default-attr-comma.expected.txt | 17 +- .../default-attr-no-space.expected.txt | 33 +- .../__snapshots__/default-attr.expected.txt | 17 +- .../double-hyphen-block.expected.txt | 8 +- .../double-hyphen-line-start.expected.txt | 8 +- .../double-hyphen-line.expected.txt | 8 +- .../empty-closing-tag.expected.txt | 20 +- .../empty-closing-tag2.expected.txt | 30 +- .../eof-attr-argument.expected.txt | 7 +- .../__snapshots__/eof-attr-name.expected.txt | 10 +- ...attr-value-js-comment-comment.expected.txt | 16 +- .../eof-attr-value-string.expected.txt | 7 +- .../__snapshots__/eof-attr-value.expected.txt | 16 +- .../eof-placeholder-body-escaped.expected.txt | 9 +- ...-placeholder-body-non-escaped.expected.txt | 5 +- ...aceholder-script-body-escaped.expected.txt | 9 +- ...older-script-body-non-escaped.expected.txt | 9 +- .../eof-placeholder-string.expected.txt | 9 +- .../eof-script-body.expected.txt | 3 +- .../__snapshots__/eof-style.expected.txt | 3 +- .../__snapshots__/eof-tag-start.expected.txt | 10 +- .../html-block-after-tag.expected.txt | 14 +- .../html-comment-tag.expected.txt | 32 +- .../__snapshots__/html-comments.expected.txt | 14 +- ...NonstandardStringPlaceholders.expected.txt | 16 +- ...le-escaped-dollar-placeholder.expected.txt | 16 +- ...tr-escaped-dollar-placeholder.expected.txt | 16 +- ...Placeholders-attr-placeholder.expected.txt | 16 +- .../invalid-closing-tag.expected.txt | 10 +- .../mixed-bad-indentation.expected.txt | 12 +- .../__snapshots__/mixed-cdata.expected.txt | 4 +- .../__snapshots__/mixed-comment.expected.txt | 4 +- .../__snapshots__/mixed-invalid.expected.txt | 54 +- .../mixed-open-tag-only.expected.txt | 7 +- .../mixed/__snapshots__/mixed.expected.txt | 54 +- .../multi-line-attrs.expected.txt | 3 +- ...tiline-html-block-missing-end.expected.txt | 4 +- ...iline-html-block-nested-empty.expected.txt | 2 +- .../multiline-html-block-nested.expected.txt | 14 +- ...ultiline-html-block-same-line.expected.txt | 4 +- .../multiline-html-block.expected.txt | 12 +- ...tiple-tags-on-line-close-next.expected.txt | 20 +- .../__snapshots__/nested-pyramid.expected.txt | 12 +- .../nested-siblings.expected.txt | 6 +- .../__snapshots__/nested-tags.expected.txt | 4 +- .../__snapshots__/nested-text.expected.txt | 4 +- .../open-tag-only-with-body.expected.txt | 6 +- .../__snapshots__/open-tag-only.expected.txt | 51 +- .../__snapshots__/param-tag.expected.txt | 20 +- ...er-in-template-literal-string.expected.txt | 9 +- .../parsed-text-style-tag.expected.txt | 11 +- .../placeholder-attr-invalid.expected.txt | 16 +- ...ttr-string-value-mixed-quotes.expected.txt | 18 +- ...lder-attr-string-value-parens.expected.txt | 18 +- ...placeholder-attr-string-value.expected.txt | 18 +- ...older-attr-within-placeholder.expected.txt | 16 +- ...er-attr-within-string-complex.expected.txt | 16 +- ...der-attr-within-string-simple.expected.txt | 16 +- .../placeholder-attr-wrapped.expected.txt | 16 +- .../placeholder-backslash.expected.txt | 74 +- ...er-body-multi-line-js-comment.expected.txt | 11 +- ...r-body-single-line-js-comment.expected.txt | 11 +- .../placeholder-body-text.expected.txt | 18 +- .../placeholder-empty.expected.txt | 3 +- .../placeholder-escape.expected.txt | 16 +- .../placeholder-no-escape.expected.txt | 16 +- .../placeholder-tag-name-concise.expected.txt | 2 +- .../placeholder-tag-name-html.expected.txt | 17 +- ...-unnamed-attr-escaped-escaped.expected.txt | 18 +- ...ceholder-unnamed-attr-escaped.expected.txt | 18 +- ...der-unnamed-attr-last-concise.expected.txt | 4 +- ...unnamed-attr-last-self-closed.expected.txt | 15 +- ...placeholder-unnamed-attr-last.expected.txt | 20 +- .../placeholder-unnamed-attr.expected.txt | 26 +- ...placeholder-within-script-tag.expected.txt | 17 +- ...r-within-script-within-string.expected.txt | 17 +- ...holder-within-string-newlines.expected.txt | 14 +- .../__snapshots__/root-el.expected.txt | 2 +- .../__snapshots__/root-els.expected.txt | 4 +- .../__snapshots__/script-concise.expected.txt | 4 +- .../script-empty-concise.expected.txt | 6 +- .../script-escaped-placeholder.expected.txt | 11 +- .../script-self-closed.expected.txt | 26 +- .../script-single-line-comment.expected.txt | 11 +- .../script-tag-entities.expected.txt | 17 +- .../script/__snapshots__/script.expected.txt | 11 +- ...ptlet-line-multiline-comments.expected.txt | 10 +- .../scriptlet-line-no-middle.expected.txt | 2 +- ...et-line-trailing-line-comment.expected.txt | 10 +- ...tlet-terminated-by-semi-colon.expected.txt | 29 +- .../self-closed-tag-attrs.expected.txt | 17 +- .../self-closed-tag.expected.txt | 5 +- .../self-closing-open-tag-only.expected.txt | 11 +- .../semicolon-concise.expected.txt | 4 +- ...-class-dynamic-literal-prefix.expected.txt | 2 +- ...-class-dynamic-literal-suffix.expected.txt | 2 +- .../shorthand-class-dynamic.expected.txt | 2 +- .../shorthand-class-self-closed.expected.txt | 19 +- .../shorthand-closing-html.expected.txt | 36 +- .../shorthand-closing-html2.expected.txt | 14 +- .../shorthand-closing-html3.expected.txt | 14 +- ...orthand-div-id-class-multiple.expected.txt | 2 +- .../shorthand-div-id-class.expected.txt | 2 +- .../shorthand-div-id.expected.txt | 2 +- .../shorthand-id-class-html.expected.txt | 18 +- .../shorthand-id-class.expected.txt | 2 +- ...and-id-dynamic-literal-prefix.expected.txt | 2 +- ...and-id-dynamic-literal-suffix.expected.txt | 2 +- .../shorthand-id-dynamic.expected.txt | 2 +- .../shorthand-id-self-closed.expected.txt | 19 +- .../__snapshots__/shorthand-id.expected.txt | 2 +- .../shorthand-mixed-concise.expected.txt | 10 +- .../shorthand-mixed.expected.txt | 86 +- ...single-line-text-block-nested.expected.txt | 2 +- ...ingle-line-text-block-sibling.expected.txt | 2 +- .../statement-concise-only.expected.txt | 5 +- ...forward-slash-within-open-tag.expected.txt | 5 +- .../stray-special-chars.expected.txt | 12 +- .../__snapshots__/strip-bom.expected.txt | 11 +- ...pression-literal-prefix-attrs.expected.txt | 22 +- ...ression-literal-prefix-suffix.expected.txt | 16 +- ...ame-expression-literal-prefix.expected.txt | 16 +- ...ame-expression-literal-suffix.expected.txt | 16 +- ...-name-expression-shorthand-id.expected.txt | 20 +- ...expression-simple-empty-close.expected.txt | 16 +- .../tag-name-expression-simple.expected.txt | 16 +- .../tag-var-declaration.expected.txt | 190 +++-- .../tag-var-with-params.expected.txt | 18 +- .../text-after-semicolon.expected.txt | 6 +- .../__snapshots__/text-after-tag.expected.txt | 2 +- .../text-parse-mode-concise.expected.txt | 4 +- ...xt-parse-mode-delimited-block.expected.txt | 16 +- .../text-parse-mode-html.expected.txt | 22 +- .../__snapshots__/textarea.expected.txt | 4 +- .../unary-as-member-expression.expected.txt | 4 +- .../unclosed-tag-eof.expected.txt | 8 +- .../__snapshots__/var-new-Date.expected.txt | 2 +- .../var/__snapshots__/var.expected.txt | 6 +- .../whitespace-around-equals.expected.txt | 16 +- ...whitespace-empty-lines-indent.expected.txt | 6 +- .../whitespace-empty-lines.expected.txt | 6 +- .../whitespace-newline-indent.expected.txt | 20 +- .../whitespace-newline.expected.txt | 20 +- .../whitespace-only-reset-indent.expected.txt | 4 +- .../whitespace-preservation.expected.txt | 92 ++- .../xml-declaration-ill-formed.expected.txt | 12 +- .../xml-declaration.expected.txt | 12 +- src/__tests__/main.test.ts | 22 +- src/core/Parser.ts | 10 +- src/states/CLOSE_TAG.ts | 2 +- src/states/CONCISE_HTML_CONTENT.ts | 2 +- src/states/HTML_CONTENT.ts | 8 + src/states/TAG_NAME.ts | 3 +- src/util/constants.ts | 15 +- src/util/util.ts | 2 +- 238 files changed, 3707 insertions(+), 3016 deletions(-) create mode 100644 .changeset/two-points-guess.md diff --git a/.changeset/two-points-guess.md b/.changeset/two-points-guess.md new file mode 100644 index 00000000..abea5803 --- /dev/null +++ b/.changeset/two-points-guess.md @@ -0,0 +1,7 @@ +--- +"htmljs-parser": major +--- + +Rename `onTagName` to `onOpenTagName`. +Add a new `onOpenTagStart` event (before `onOpenTagName`). +Split the `onCloseTag` event into three new events: `onClosetTagStart`, `onCloseTagName` & `onCloseTagEnd`). diff --git a/README.md b/README.md index 441d47a4..50d4251d 100644 --- a/README.md +++ b/README.md @@ -155,20 +155,29 @@ const parser = createParser({ range.value; // Another range that includes only the value itself without the leading $ or surrounding braces (if applicable). }, + /** + * Called when we're about to begin an HTML open tag (before the tag name). + * Note: This is only called for HTML mode tags and can be used to track if you are in concise mode. + * + * @example + * 1╭─
Hi
+ * ╰─ ╰─ openTagStart + */ + onOpenTagStart(range) {} + /** * Called when a tag name, which can include placeholders, has been parsed. * * @example * 1╭─
- * ╰─ ╰─ tagName "div" + * ╰─ ╰─ openTagName "div" * 2╭─ - * │ │ │ ╰─ tagName.quasis[1] "-again" - * │ │ ╰─ tagName.expressions[0] "${test}" - * │ ├─ tagName.quasis[0] "hello-" - * ╰─ ╰─ tagName "hello-${test}-again" + * │ │ │ ╰─ openTagName.quasis[1] "-again" + * │ │ ╰─ openTagName.expressions[0] "${test}" + * │ ├─ openTagName.quasis[0] "hello-" + * ╰─ ╰─ openTagName "hello-${test}-again" */ - onTagName(range) { - range.concise; // true if this tag is a concise mode tag. + onOpenTagName(range) { range.quasis; // An array of ranges that indicate the string literal parts of the tag name. range.expressions; // A list of placeholder ranges (similar to whats emitted via onPlaceholder). @@ -353,21 +362,38 @@ const parser = createParser({ * ╰─ ╰─ openTagEnd ">" */ onOpenTagEnd(range) { - range.selfClosed; // true if this tag was self closed (onCloseTag would not be called if so). + range.selfClosed; // true if this tag was self closed (the onCloseTag* handlers will not be called if so). }, /** - * Called once the closing tag (or in concise mode an outdent or eof) is parsed. + * Called when we start parsing and html closing tag. + * Note this is not emitted for concise, selfClosed, void or statement tags. + * + * @example + * 1╭─
+ * ╰─ ╰─ closeTagStart "
+ * ╰─ ╰─ closeTagName "div" + */ + onCloseTagName(range) {}, + + /** + * Called once the closing tag has finished parsing, or in concise mode we hit an outdent or eof. * Note this is not called for selfClosed, void or statement tags. * * @example * 1╭─
- * │ │ ╰─ closeTag(div).value "div" - * ╰─ ╰─ closeTag(div) "" + * ╰─ ╰─ closeTagEnd ">" */ - onCloseTag(range) { - range.value; // The raw content of the closing tag (undefined in concise mode). - }, + onCloseTagEnd(range) {}, }); ``` diff --git a/src/__tests__/fixtures/argument-and-params/__snapshots__/argument-and-params.expected.txt b/src/__tests__/fixtures/argument-and-params/__snapshots__/argument-and-params.expected.txt index 02e96502..4aa0654a 100644 --- a/src/__tests__/fixtures/argument-and-params/__snapshots__/argument-and-params.expected.txt +++ b/src/__tests__/fixtures/argument-and-params/__snapshots__/argument-and-params.expected.txt @@ -1,44 +1,50 @@ 1╭─ <${x}(y)/> - │ │ ││ ╰─ openTagEnd:selfClosed "/>" - │ │ │╰─ tagArgs.value - │ │ ├─ tagArgs "(y)" - │ │ ╰─ tagName.quasis[1] - │ ├─ tagName.expressions[0] "${x}" - │ ├─ tagName.quasis[0] - ╰─ ╰─ tagName "${x}" + │ ││ ││ ╰─ openTagEnd:selfClosed "/>" + │ ││ │╰─ tagArgs.value + │ ││ ├─ tagArgs "(y)" + │ ││ ╰─ tagName.quasis[1] + │ │├─ tagName.expressions[0] "${x}" + │ │├─ tagName.quasis[0] + │ │╰─ tagName "${x}" + ╰─ ╰─ openTagStart 2╭─ <${x}|y|/> - │ │ ││ ╰─ openTagEnd:selfClosed "/>" - │ │ │╰─ tagParams.value - │ │ ├─ tagParams "|y|" - │ │ ╰─ tagName.quasis[1] - │ ├─ tagName.expressions[0] "${x}" - │ ├─ tagName.quasis[0] - ╰─ ╰─ tagName "${x}" + │ ││ ││ ╰─ openTagEnd:selfClosed "/>" + │ ││ │╰─ tagParams.value + │ ││ ├─ tagParams "|y|" + │ ││ ╰─ tagName.quasis[1] + │ │├─ tagName.expressions[0] "${x}" + │ │├─ tagName.quasis[0] + │ │╰─ tagName "${x}" + ╰─ ╰─ openTagStart 3╭─ - │ │ ││││ ╰─ openTagEnd:selfClosed "/>" - │ │ │││╰─ tagArgs.value - │ │ ││╰─ tagArgs "(y)" - │ │ │╰─ tagShorthandClass.quasis[0] - │ │ ╰─ tagShorthandClass ".x" - ╰─ ╰─ tagName "tag" + │ ││ ││││ ╰─ openTagEnd:selfClosed "/>" + │ ││ │││╰─ tagArgs.value + │ ││ ││╰─ tagArgs "(y)" + │ ││ │╰─ tagShorthandClass.quasis[0] + │ ││ ╰─ tagShorthandClass ".x" + │ │╰─ tagName "tag" + ╰─ ╰─ openTagStart 4╭─ - │ │ ││││ ╰─ openTagEnd:selfClosed "/>" - │ │ │││╰─ tagParams.value - │ │ ││╰─ tagParams "|y|" - │ │ │╰─ tagShorthandClass.quasis[0] - │ │ ╰─ tagShorthandClass ".x" - ╰─ ╰─ tagName "tag" + │ ││ ││││ ╰─ openTagEnd:selfClosed "/>" + │ ││ │││╰─ tagParams.value + │ ││ ││╰─ tagParams "|y|" + │ ││ │╰─ tagShorthandClass.quasis[0] + │ ││ ╰─ tagShorthandClass ".x" + │ │╰─ tagName "tag" + ╰─ ╰─ openTagStart 5╭─ - │ │ ││││ ╰─ openTagEnd:selfClosed "/>" - │ │ │││╰─ tagArgs.value - │ │ ││╰─ tagArgs "(y)" - │ │ │╰─ tagShorthandId.quasis[0] - │ │ ╰─ tagShorthandId "#x" - ╰─ ╰─ tagName "tag" + │ ││ ││││ ╰─ openTagEnd:selfClosed "/>" + │ ││ │││╰─ tagArgs.value + │ ││ ││╰─ tagArgs "(y)" + │ ││ │╰─ tagShorthandId.quasis[0] + │ ││ ╰─ tagShorthandId "#x" + │ │╰─ tagName "tag" + ╰─ ╰─ openTagStart 6╭─ - │ │ ││││ ╰─ openTagEnd:selfClosed "/>" - │ │ │││╰─ tagParams.value - │ │ ││╰─ tagParams "|y|" - │ │ │╰─ tagShorthandId.quasis[0] - │ │ ╰─ tagShorthandId "#x" - ╰─ ╰─ tagName "tag" \ No newline at end of file + │ ││ ││││ ╰─ openTagEnd:selfClosed "/>" + │ ││ │││╰─ tagParams.value + │ ││ ││╰─ tagParams "|y|" + │ ││ │╰─ tagShorthandId.quasis[0] + │ ││ ╰─ tagShorthandId "#x" + │ │╰─ tagName "tag" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/argument-attr-extra-whitespace/__snapshots__/argument-attr-extra-whitespace.expected.txt b/src/__tests__/fixtures/argument-attr-extra-whitespace/__snapshots__/argument-attr-extra-whitespace.expected.txt index 9e5ff1ee..795e3363 100644 --- a/src/__tests__/fixtures/argument-attr-extra-whitespace/__snapshots__/argument-attr-extra-whitespace.expected.txt +++ b/src/__tests__/fixtures/argument-attr-extra-whitespace/__snapshots__/argument-attr-extra-whitespace.expected.txt @@ -1,11 +1,13 @@ 1╭─
y)> - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrArgs.value "x > y" - │ │ │ ╰─ attrArgs "(x > y)" - │ │ ╰─ attrName "if" - ╰─ ╰─ tagName "div" + │ ││ │ ││ ╰─ openTagEnd + │ ││ │ │╰─ attrArgs.value "x > y" + │ ││ │ ╰─ attrArgs "(x > y)" + │ ││ ╰─ attrName "if" + │ │╰─ tagName "div" + ╰─ ╰─ openTagStart 2╭─
- │ │ ╰─ closeTag(div).value "div" + │ │ │ ╰─ closeTagEnd(div) + │ │ ╰─ closeTagName "div" │ ├─ text "\n" - ╰─ ╰─ closeTag(div) "" + ╰─ ╰─ closeTagStart " - │ │ │ ││ ╰─ error(INVALID_ATTRIBUTE_ARGUMENT:An attribute can only have one set of arguments) "nonsense!" - │ │ │ │╰─ attrArgs.value "var i = 0; i < 10; i++" - │ │ │ ╰─ attrArgs "(var i = 0; i < 10; i++)" - │ │ ╰─ attrName "for" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ╰─ error(INVALID_ATTRIBUTE_ARGUMENT:An attribute can only have one set of arguments) "nonsense!" + │ ││ │ │╰─ attrArgs.value "var i = 0; i < 10; i++" + │ ││ │ ╰─ attrArgs "(var i = 0; i < 10; i++)" + │ ││ ╰─ attrName "for" + │ │╰─ tagName "div" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/argument-attr/__snapshots__/argument-attr.expected.txt b/src/__tests__/fixtures/argument-attr/__snapshots__/argument-attr.expected.txt index 0ad520d1..a4b0da3f 100644 --- a/src/__tests__/fixtures/argument-attr/__snapshots__/argument-attr.expected.txt +++ b/src/__tests__/fixtures/argument-attr/__snapshots__/argument-attr.expected.txt @@ -1,8 +1,10 @@ 1╭─
y)>
- │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrArgs.value "x > y" - │ │ │ ╰─ attrArgs "(x > y)" - │ │ ╰─ attrName "if" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart " y" + │ ││ │ ╰─ attrArgs "(x > y)" + │ ││ ╰─ attrName "if" + │ │╰─ tagName "div" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/argument-tag-attr/__snapshots__/argument-tag-attr.expected.txt b/src/__tests__/fixtures/argument-tag-attr/__snapshots__/argument-tag-attr.expected.txt index 039e2126..46d7aa61 100644 --- a/src/__tests__/fixtures/argument-tag-attr/__snapshots__/argument-tag-attr.expected.txt +++ b/src/__tests__/fixtures/argument-tag-attr/__snapshots__/argument-tag-attr.expected.txt @@ -1,10 +1,12 @@ 1╭─ y)> - │ │ ││ │ ││ ││ ╰─ closeTag(for).value "for" - │ │ ││ │ ││ │╰─ closeTag(for) "" - │ │ ││ │ ││ ╰─ openTagEnd - │ │ ││ │ │╰─ attrArgs.value "x > y" - │ │ ││ │ ╰─ attrArgs "(x > y)" - │ │ ││ ╰─ attrName "if" - │ │ │╰─ tagArgs.value "var i = 0; i < 10; i++" - │ │ ╰─ tagArgs "(var i = 0; i < 10; i++)" - ╰─ ╰─ tagName "for" \ No newline at end of file + │ ││ ││ │ ││ ││ │ ╰─ closeTagEnd(for) + │ ││ ││ │ ││ ││ ╰─ closeTagName "for" + │ ││ ││ │ ││ │╰─ closeTagStart " y" + │ ││ ││ │ ╰─ attrArgs "(x > y)" + │ ││ ││ ╰─ attrName "if" + │ ││ │╰─ tagArgs.value "var i = 0; i < 10; i++" + │ ││ ╰─ tagArgs "(var i = 0; i < 10; i++)" + │ │╰─ tagName "for" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/argument-tag-complex/__snapshots__/argument-tag-complex.expected.txt b/src/__tests__/fixtures/argument-tag-complex/__snapshots__/argument-tag-complex.expected.txt index 31fac2fd..294f4d8b 100644 --- a/src/__tests__/fixtures/argument-tag-complex/__snapshots__/argument-tag-complex.expected.txt +++ b/src/__tests__/fixtures/argument-tag-complex/__snapshots__/argument-tag-complex.expected.txt @@ -1,7 +1,9 @@ 1╭─ - │ │ ││ ││ ╰─ closeTag(for).value "for" - │ │ ││ │╰─ closeTag(for) "" - │ │ ││ ╰─ openTagEnd - │ │ │╰─ tagArgs.value "x in [\"Hello ${name}!\", \"(World)\"]" - │ │ ╰─ tagArgs "(x in [\"Hello ${name}!\", \"(World)\"])" - ╰─ ╰─ tagName "for" \ No newline at end of file + │ ││ ││ ││ │ ╰─ closeTagEnd(for) + │ ││ ││ ││ ╰─ closeTagName "for" + │ ││ ││ │╰─ closeTagStart " - │ │ ││ ││ ╰─ closeTag(for).value "for" - │ │ ││ │╰─ closeTag(for) "" - │ │ ││ ╰─ openTagEnd - │ │ │╰─ tagArgs.value "x in y" - │ │ ╰─ tagArgs "(x in y)" - ╰─ ╰─ tagName "for" \ No newline at end of file + │ ││ ││ ││ │ ╰─ closeTagEnd(for) + │ ││ ││ ││ ╰─ closeTagName "for" + │ ││ ││ │╰─ closeTagStart " - │ │ ││ ╰─ error(INVALID_TAG_ARGUMENT:A tag can only have one argument) - │ │ │╰─ tagArgs.value "var i = 0; i < 10; i++" - │ │ ╰─ tagArgs "(var i = 0; i < 10; i++)" - ╰─ ╰─ tagName "for" \ No newline at end of file + │ ││ ││ ╰─ error(INVALID_TAG_ARGUMENT:A tag can only have one argument) + │ ││ │╰─ tagArgs.value "var i = 0; i < 10; i++" + │ ││ ╰─ tagArgs "(var i = 0; i < 10; i++)" + │ │╰─ tagName "for" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/argument-tag-nested-parens/__snapshots__/argument-tag-nested-parens.expected.txt b/src/__tests__/fixtures/argument-tag-nested-parens/__snapshots__/argument-tag-nested-parens.expected.txt index 6b9c39a8..ed2d5d30 100644 --- a/src/__tests__/fixtures/argument-tag-nested-parens/__snapshots__/argument-tag-nested-parens.expected.txt +++ b/src/__tests__/fixtures/argument-tag-nested-parens/__snapshots__/argument-tag-nested-parens.expected.txt @@ -4,10 +4,12 @@ │ ││ │╰─ tagArgs.value "notEmpty(data.colors)" │ ││ ╰─ tagArgs "(notEmpty(data.colors))" │ │╰─ tagName "if" - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 3╭─ - │ │ ╰─ closeTag(if).value "if" + │ │ │ ╰─ closeTagEnd(if) + │ │ ╰─ closeTagName "if" │ ├─ text "\n" - ╰─ ╰─ closeTag(if) "" + ╰─ ╰─ closeTagStart " - │ │ ││ ││ ╰─ closeTag(for).value "for" - │ │ ││ │╰─ closeTag(for) "" - │ │ ││ ╰─ openTagEnd - │ │ │╰─ tagArgs.value "x in y" - │ │ ╰─ tagArgs "(x in y)" - ╰─ ╰─ tagName "for" + │ ││ ││ ││ │ ╰─ closeTagEnd(for) + │ ││ ││ ││ ╰─ closeTagName "for" + │ ││ ││ │╰─ closeTagStart " - │ │ ││ ╰─ openTagEnd:selfClosed "/>" - │ │ │╰─ tagArgs.value "'c'" - │ │ ╰─ tagArgs "('c')" - ╰─ ╰─ tagName "ab" + │ ││ ││ ╰─ openTagEnd:selfClosed "/>" + │ ││ │╰─ tagArgs.value "'c'" + │ ││ ╰─ tagArgs "('c')" + │ │╰─ tagName "ab" + ╰─ ╰─ openTagStart 3╭─ - │ │││ ╰─ openTagEnd:selfClosed "/>" - │ ││╰─ tagArgs.value "'b'" - │ │╰─ tagArgs "('b')" - ╰─ ╰─ tagName + │ ││││ ╰─ openTagEnd:selfClosed "/>" + │ │││╰─ tagArgs.value "'b'" + │ ││╰─ tagArgs "('b')" + │ │╰─ tagName + ╰─ ╰─ openTagStart 4╰─ \ No newline at end of file diff --git a/src/__tests__/fixtures/attr-bound/__snapshots__/attr-bound.expected.txt b/src/__tests__/fixtures/attr-bound/__snapshots__/attr-bound.expected.txt index dd61685d..03a71aa6 100644 --- a/src/__tests__/fixtures/attr-bound/__snapshots__/attr-bound.expected.txt +++ b/src/__tests__/fixtures/attr-bound/__snapshots__/attr-bound.expected.txt @@ -1,58 +1,70 @@ 1╭─ test - │ │ ││ │ ││ │ ╰─ closeTag(a).value - │ │ ││ │ ││ ╰─ closeTag(a) "" - │ │ ││ │ │╰─ text "test" - │ │ ││ │ ╰─ openTagEnd - │ │ ││ ╰─ attrValue:bound.value "foo" - │ │ │╰─ attrValue:bound ":=foo" - │ │ ╰─ attrName - ╰─ ╰─ tagName + │ ││ ││ │ ││ │ │╰─ closeTagEnd(a) + │ ││ ││ │ ││ │ ╰─ closeTagName + │ ││ ││ │ ││ ╰─ closeTagStart "test - │ │ │ │ │ ││ │ ╰─ closeTag(a).value - │ │ │ │ │ ││ ╰─ closeTag(a) "" - │ │ │ │ │ │╰─ text "test" - │ │ │ │ │ ╰─ openTagEnd - │ │ │ │ ╰─ attrValue:bound.value "foo" - │ │ │ ╰─ attrValue:bound ":= foo" - │ │ ╰─ attrName - ╰─ ╰─ tagName + │ ││ │ │ │ ││ │ │╰─ closeTagEnd(a) + │ ││ │ │ │ ││ │ ╰─ closeTagName + │ ││ │ │ │ ││ ╰─ closeTagStart "test - │ ││ │ ││ │ ╰─ closeTag(a).value - │ ││ │ ││ ╰─ closeTag(a) "" - │ ││ │ │╰─ text "test" - │ ││ │ ╰─ openTagEnd - │ ││ ╰─ attrValue:bound.value "foo" - │ │├─ attrValue:bound ":=foo" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││ │ ││ │ │╰─ closeTagEnd(a) + │ │││ │ ││ │ ╰─ closeTagName + │ │││ │ ││ ╰─ closeTagStart "test - │ │ │ │ ││ │ ╰─ closeTag(a).value - │ │ │ │ ││ ╰─ closeTag(a) "" - │ │ │ │ │╰─ text "test" - │ │ │ │ ╰─ openTagEnd - │ │ │ ╰─ attrValue:bound.value "foo" - │ │ ├─ attrValue:bound ":= foo" - │ │ ╰─ attrName - ╰─ ╰─ tagName + │ ││ │ │ ││ │ │╰─ closeTagEnd(a) + │ ││ │ │ ││ │ ╰─ closeTagName + │ ││ │ │ ││ ╰─ closeTagStart "test - │ │││ │ │ ││ │ ╰─ closeTag(a).value - │ │││ │ │ ││ ╰─ closeTag(a) "" - │ │││ │ │ │╰─ text "test" - │ │││ │ │ ╰─ openTagEnd - │ │││ │ ╰─ attrValue:bound.value "foo" - │ │││ ├─ attrValue:bound ":=foo" - │ │││ ╰─ attrName - │ ││╰─ tagVar.value "bar" - │ │╰─ tagVar "/bar" - ╰─ ╰─ tagName + │ ││││ │ │ ││ │ │╰─ closeTagEnd(a) + │ ││││ │ │ ││ │ ╰─ closeTagName + │ ││││ │ │ ││ ╰─ closeTagStart "test - │ │││ │ │ ││ │ ╰─ closeTag(a).value - │ │││ │ │ ││ ╰─ closeTag(a) "" - │ │││ │ │ │╰─ text "test" - │ │││ │ │ ╰─ openTagEnd - │ │││ │ ╰─ attrValue:bound.value "foo" - │ │││ ├─ attrValue:bound ":= foo" - │ │││ ╰─ attrName - │ ││╰─ tagVar.value "bar" - │ │╰─ tagVar "/bar" - ╰─ ╰─ tagName \ No newline at end of file + │ ││││ │ │ ││ │ │╰─ closeTagEnd(a) + │ ││││ │ │ ││ │ ╰─ closeTagName + │ ││││ │ │ ││ ╰─ closeTagStart " { console.log(\"y\") }" │ │ │ ╰─ attrValue "= (x) => { console.log(\"y\") }" │ │ ╰─ attrName - │ ├─ closeTag(tag) + │ ├─ closeTagEnd(tag) │ ├─ openTagEnd ╰─ ╰─ tagName "tag" 3╭─ tag a = x => { console.log("y") } b @@ -17,7 +17,7 @@ │ │ │ │ ╰─ attrValue.value "x => { console.log(\"y\") }" │ │ │ ╰─ attrValue "= x => { console.log(\"y\") }" │ │ ╰─ attrName - │ ├─ closeTag(tag) + │ ├─ closeTagEnd(tag) │ ├─ openTagEnd ╰─ ╰─ tagName "tag" 4╭─ tag a = async x => { console.log("y") } b @@ -25,16 +25,16 @@ │ │ │ │ ╰─ attrValue.value "async x => { console.log(\"y\") }" │ │ │ ╰─ attrValue "= async x => { console.log(\"y\") }" │ │ ╰─ attrName - │ ├─ closeTag(tag) + │ ├─ closeTagEnd(tag) │ ├─ openTagEnd ╰─ ╰─ tagName "tag" 5╭─ tag a = async function (x) { console.log("y") } b - │ │ │ │ │ │├─ closeTag(tag) + │ │ │ │ │ │├─ closeTagEnd(tag) │ │ │ │ │ │╰─ openTagEnd │ │ │ │ │ ╰─ attrName │ │ │ │ ╰─ attrValue.value "async function (x) { console.log(\"y\") }" │ │ │ ╰─ attrValue "= async function (x) { console.log(\"y\") }" │ │ ╰─ attrName - │ ├─ closeTag(tag) + │ ├─ closeTagEnd(tag) │ ├─ openTagEnd ╰─ ╰─ tagName "tag" \ No newline at end of file diff --git a/src/__tests__/fixtures/attr-complex-instanceof/__snapshots__/attr-complex-instanceof.expected.txt b/src/__tests__/fixtures/attr-complex-instanceof/__snapshots__/attr-complex-instanceof.expected.txt index 905c89bd..af8f1d09 100644 --- a/src/__tests__/fixtures/attr-complex-instanceof/__snapshots__/attr-complex-instanceof.expected.txt +++ b/src/__tests__/fixtures/attr-complex-instanceof/__snapshots__/attr-complex-instanceof.expected.txt @@ -12,7 +12,7 @@ │ │ │ │ ╰─ attrValue.value "'foo'" │ │ │ ╰─ attrValue "= 'foo'" │ │ ╰─ attrName - │ ├─ closeTag(var) + │ ├─ closeTagEnd(var) ╰─ ╰─ tagName "tag" 4╭─ tag a = 'foo' instanceof := String │ │ │ │ │ │ │ ╰─ attrValue:bound.value "String" @@ -21,7 +21,7 @@ │ │ │ │ ╰─ attrValue.value "'foo'" │ │ │ ╰─ attrValue "= 'foo'" │ │ ╰─ attrName - │ ├─ closeTag(tag) + │ ├─ closeTagEnd(tag) │ ├─ openTagEnd ╰─ ╰─ tagName "tag" 5╭─ tag a = 'foo' instanceof= String @@ -31,7 +31,7 @@ │ │ │ │ ╰─ attrValue.value "'foo'" │ │ │ ╰─ attrValue "= 'foo'" │ │ ╰─ attrName - │ ├─ closeTag(tag) + │ ├─ closeTagEnd(tag) │ ├─ openTagEnd ╰─ ╰─ tagName "tag" 6╭─ tag a = 'foo' instanceof; @@ -39,7 +39,7 @@ │ │ │ │ ╰─ attrValue.value "'foo'" │ │ │ ╰─ attrValue "= 'foo'" │ │ ╰─ attrName - │ ├─ closeTag(tag) + │ ├─ closeTagEnd(tag) │ ├─ openTagEnd ╰─ ╰─ tagName "tag" 7╭─ @@ -50,24 +50,27 @@ │ │ │ │ ╰─ attrValue.value "'foo'" │ │ │ ╰─ attrValue "= 'foo'" │ │ ╰─ attrName - │ ├─ closeTag(tag) + │ ├─ closeTagEnd(tag) ╰─ ╰─ tagName "tag" 9╭─ ╰─ ╰─ openTagEnd 10╭─ - │ ││ │ │ │ │ ││ ╰─ closeTag(tag).value "tag" - │ ││ │ │ │ │ │╰─ closeTag(tag) "" + │ ││ │ │ │ │ ││ │ ╰─ closeTagEnd(tag) + │ ││ │ │ │ │ ││ ╰─ closeTagName "tag" + │ ││ │ │ │ │ │╰─ closeTagStart " - │ │ │ │ │ │ ╰─ openTagEnd:selfClosed "/>" - │ │ │ │ │ ╰─ attrName "instanceof" - │ │ │ │ ╰─ attrValue.value "'foo'" - │ │ │ ╰─ attrValue "= 'foo'" - │ │ ╰─ attrName - ╰─ ╰─ tagName "tag" \ No newline at end of file + │ ││ │ │ │ │ ╰─ openTagEnd:selfClosed "/>" + │ ││ │ │ │ ╰─ attrName "instanceof" + │ ││ │ │ ╰─ attrValue.value "'foo'" + │ ││ │ ╰─ attrValue "= 'foo'" + │ ││ ╰─ attrName + │ │╰─ tagName "tag" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/attr-complex/__snapshots__/attr-complex.expected.txt b/src/__tests__/fixtures/attr-complex/__snapshots__/attr-complex.expected.txt index 5af966e5..a9687d6d 100644 --- a/src/__tests__/fixtures/attr-complex/__snapshots__/attr-complex.expected.txt +++ b/src/__tests__/fixtures/attr-complex/__snapshots__/attr-complex.expected.txt @@ -1,13 +1,15 @@ 1╭─ test - │ │ │││ │ ││ │ ││ │ ╰─ closeTag(a).value - │ │ │││ │ ││ │ ││ ╰─ closeTag(a) "" - │ │ │││ │ ││ │ │╰─ text "test" - │ │ │││ │ ││ │ ╰─ openTagEnd - │ │ │││ │ ││ ╰─ attrValue.value "d=(a + (1/2) /* comment */)" - │ │ │││ │ │╰─ attrValue "= d=(a + (1/2) /* comment */)" - │ │ │││ │ ╰─ attrName - │ │ │││ ╰─ attrName - │ │ ││╰─ attrValue.value "123+256" - │ │ │╰─ attrValue "=123+256" - │ │ ╰─ attrName - ╰─ ╰─ tagName \ No newline at end of file + │ ││ │││ │ ││ │ ││ │ │╰─ closeTagEnd(a) + │ ││ │││ │ ││ │ ││ │ ╰─ closeTagName + │ ││ │││ │ ││ │ ││ ╰─ closeTagStart " - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "'\\\"hello\\\"'" - │ │ │ ╰─ attrValue "='\\\"hello\\\"'" - │ │ ╰─ attrName "foo" - ╰─ ╰─ tagName "div" + │ ││ │ ││ ╰─ openTagEnd + │ ││ │ │╰─ attrValue.value "'\\\"hello\\\"'" + │ ││ │ ╰─ attrValue "='\\\"hello\\\"'" + │ ││ ╰─ attrName "foo" + │ │╰─ tagName "div" + ╰─ ╰─ openTagStart 2╭─ Hello World! ╰─ ╰─ text "\n Hello World!\n" 3╭─ - │ │ ╰─ closeTag(div).value "div" - ╰─ ╰─ closeTag(div) "" \ No newline at end of file + │ │ │ ╰─ closeTagEnd(div) + │ │ ╰─ closeTagName "div" + ╰─ ╰─ closeTagStart " - │ │ │ ││ ││ ╰─ closeTag(span).value "span" - │ │ │ ││ │╰─ closeTag(span) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "\"\\$name\"" - │ │ │ ╰─ attrValue "=\"\\$name\"" - │ │ ╰─ attrName "data-foo" - ╰─ ╰─ tagName "span" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(span) + │ ││ │ ││ ││ ╰─ closeTagName "span" + │ ││ │ ││ │╰─ closeTagStart " - │ │ │││ │││ │││ ││ ╰─ closeTag(test).value "test" - │ │ │││ │││ │││ │╰─ closeTag(test) "" - │ │ │││ │││ │││ ╰─ openTagEnd - │ │ │││ │││ ││╰─ attrValue.value "789" - │ │ │││ │││ │╰─ attrValue "=789" - │ │ │││ │││ ╰─ attrName - │ │ │││ ││╰─ attrValue.value "456" - │ │ │││ │╰─ attrValue "=456" - │ │ │││ ╰─ attrName - │ │ ││╰─ attrValue.value "123" - │ │ │╰─ attrValue "=123" - │ │ ╰─ attrName - ╰─ ╰─ tagName "test" \ No newline at end of file + │ ││ │││ │││ │││ ││ │ ╰─ closeTagEnd(test) + │ ││ │││ │││ │││ ││ ╰─ closeTagName "test" + │ ││ │││ │││ │││ │╰─ closeTagStart " - │ │ │ ││ │ ││ ││ ╰─ closeTag(a).value - │ │ │ ││ │ ││ │╰─ closeTag(a) "" - │ │ │ ││ │ ││ ╰─ openTagEnd - │ │ │ ││ │ │╰─ attrValue.value "abc" - │ │ │ ││ │ ╰─ attrValue "=abc" - │ │ │ ││ ╰─ attrName "data" - │ │ │ │╰─ attrValue.value "123" - │ │ │ ╰─ attrValue "=123" - │ │ ╰─ attrName "data" - ╰─ ╰─ tagName \ No newline at end of file + │ ││ │ ││ │ ││ ││ │╰─ closeTagEnd(a) + │ ││ │ ││ │ ││ ││ ╰─ closeTagName + │ ││ │ ││ │ ││ │╰─ closeTagStart " - │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "false" - │ │ │ ╰─ attrValue "=false" - │ │ ╰─ attrName "data" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart " - │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "null" - │ │ │ ╰─ attrValue "=null" - │ │ ╰─ attrName "data" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart " - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │╰─ closeTag(div) "" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ ╰─ openTagEnd - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ │╰─ attrValue.value "-1.5e-10" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ╰─ attrValue "=-1.5e-10" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ ╰─ attrName "data" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ │╰─ attrValue.value "-1.5e+10" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ╰─ attrValue "=-1.5e+10" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ ╰─ attrName "data" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ │╰─ attrValue.value "-1.5e10" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ╰─ attrValue "=-1.5e10" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ ╰─ attrName "data" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ │╰─ attrValue.value "-1.5" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ╰─ attrValue "=-1.5" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ ╰─ attrName "data" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ │╰─ attrValue.value "-.5" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ╰─ attrValue "=-.5" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ ╰─ attrName "data" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ │╰─ attrValue.value "-1" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ╰─ attrValue "=-1" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ ╰─ attrName "data" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ │╰─ attrValue.value "1.5e-10" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ │ ╰─ attrValue "=1.5e-10" - │ │ │ ││ │ ││ │ ││ │ ││ │ ││ ╰─ attrName "data" - │ │ │ ││ │ ││ │ ││ │ ││ │ │╰─ attrValue.value "1.5e+10" - │ │ │ ││ │ ││ │ ││ │ ││ │ ╰─ attrValue "=1.5e+10" - │ │ │ ││ │ ││ │ ││ │ ││ ╰─ attrName "data" - │ │ │ ││ │ ││ │ ││ │ │╰─ attrValue.value "1.5e10" - │ │ │ ││ │ ││ │ ││ │ ╰─ attrValue "=1.5e10" - │ │ │ ││ │ ││ │ ││ ╰─ attrName "data" - │ │ │ ││ │ ││ │ │╰─ attrValue.value "1.5" - │ │ │ ││ │ ││ │ ╰─ attrValue "=1.5" - │ │ │ ││ │ ││ ╰─ attrName "data" - │ │ │ ││ │ │╰─ attrValue.value ".5" - │ │ │ ││ │ ╰─ attrValue "=.5" - │ │ │ ││ ╰─ attrName "data" - │ │ │ │╰─ attrValue.value - │ │ │ ╰─ attrValue "=1" - │ │ ╰─ attrName "data" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │╰─ closeTagStart " - │ │ │ ││ ╰─ openTagEnd:selfClosed "/>" - │ │ │ │╰─ attrValue.value "/foo/" - │ │ │ ╰─ attrValue "=/foo/" - │ │ ╰─ attrName "data" - ╰─ ╰─ tagName "div" + │ ││ │ ││ ╰─ openTagEnd:selfClosed "/>" + │ ││ │ │╰─ attrValue.value "/foo/" + │ ││ │ ╰─ attrValue "=/foo/" + │ ││ ╰─ attrName "data" + │ │╰─ tagName "div" + ╰─ ╰─ openTagStart 2╭─
- │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "/foo/" - │ │ │ ╰─ attrValue "=/foo/" - │ │ ╰─ attrName "data" - ╰─ ╰─ tagName "div" + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart " - │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "/flag/i" - │ │ │ ╰─ attrValue "=/flag/i" - │ │ ╰─ attrName "data" - ╰─ ╰─ tagName "div" + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart " - │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "/with space/" - │ │ │ ╰─ attrValue "=/with space/" - │ │ ╰─ attrName "data" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart " - │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "\"simple\"" - │ │ │ ╰─ attrValue "=\"simple\"" - │ │ ╰─ attrName "class" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart " - │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "'simple'" - │ │ │ ╰─ attrValue "='simple'" - │ │ ╰─ attrName "class" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart " - │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "true" - │ │ │ ╰─ attrValue "=true" - │ │ ╰─ attrName "data" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart " - │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "undefined" - │ │ │ ╰─ attrValue "=undefined" - │ │ ╰─ attrName "data" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart " - │ │ │ ││ ││╰─ openTagEnd:selfClosed "/>" - │ │ │ ││ │╰─ attrMethod.body.value - │ │ │ ││ ╰─ attrMethod.body "{}" - │ │ │ │╰─ attrMethod.params.value "event" - │ │ │ ├─ attrMethod.params "(event)" - │ │ │ ╰─ attrMethod "(event){}" - │ │ ╰─ attrName "onclick" - ╰─ ╰─ tagName "foo" + │ ││ │ ││ ││╰─ openTagEnd:selfClosed "/>" + │ ││ │ ││ │╰─ attrMethod.body.value + │ ││ │ ││ ╰─ attrMethod.body "{}" + │ ││ │ │╰─ attrMethod.params.value "event" + │ ││ │ ├─ attrMethod.params "(event)" + │ ││ │ ╰─ attrMethod "(event){}" + │ ││ ╰─ attrName "onclick" + │ │╰─ tagName "foo" + ╰─ ╰─ openTagStart 2├─ 3╭─ ╰─ ╰─ openTagEnd:selfClosed "/>" 7├─ 8╭─ ╰─ ╰─ openTagEnd:selfClosed "/>" 12├─ 13╭─ ╰─ ╰─ openTagEnd:selfClosed "/>" 17├─ 18╭─ ╰─ ╰─ openTagEnd:selfClosed "/>" 22├─ 23╭─ ╰─ ╰─ openTagEnd:selfClosed "/>" 27├─ 28╭─ @@ -106,7 +113,7 @@ │ │ │ ├─ attrMethod.params "(event)" │ │ │ ╰─ attrMethod "(event) { \n console.log(\"hello\"); \n event.preventDefault();\n}" │ │ ╰─ attrName "onclick" - │ ├─ closeTag(foo) + │ ├─ closeTagEnd(foo) ╰─ ╰─ tagName "foo" 39├─ console.log("hello"); 40├─ event.preventDefault(); @@ -120,7 +127,7 @@ │ │ │ ├─ attrMethod.params "(event)" │ │ │ ╰─ attrMethod "(event) { \n console.log(\"hello\"); \n event.preventDefault();\n}" │ │ ╰─ attrName "onclick" - │ ├─ closeTag(foo) + │ ├─ closeTagEnd(foo) ╰─ ╰─ tagName "foo" 44├─ console.log("hello"); 45├─ event.preventDefault(); @@ -134,7 +141,7 @@ │ │ ├─ attrMethod.params "(event)" │ │ ├─ attrMethod "(event){ \n console.log(\"hello\"); \n event.preventDefault();\n}" │ │ ╰─ attrName - │ ├─ closeTag(foo) + │ ├─ closeTagEnd(foo) ╰─ ╰─ tagName "foo" 49├─ console.log("hello"); 50├─ event.preventDefault(); @@ -148,7 +155,7 @@ │ │ ├─ attrMethod.params "(event)" │ │ ├─ attrMethod "(event) { \n console.log(\"hello\"); \n event.preventDefault();\n}" │ │ ╰─ attrName - │ ├─ closeTag(foo) + │ ├─ closeTagEnd(foo) ╰─ ╰─ tagName "foo" 54├─ console.log("hello"); 55├─ event.preventDefault(); @@ -162,10 +169,10 @@ │ │ ├─ attrMethod.params "(event)" │ │ ├─ attrMethod "(event) { \n console.log(\"hello\"); \n event.preventDefault();\n}" │ │ ╰─ attrName - │ ├─ closeTag(foo) + │ ├─ closeTagEnd(foo) ╰─ ╰─ tagName "foo" 59├─ console.log("hello"); 60├─ event.preventDefault(); 61╭─ } - │ ├─ closeTag(foo) + │ ├─ closeTagEnd(foo) ╰─ ╰─ openTagEnd \ No newline at end of file diff --git a/src/__tests__/fixtures/attr-multi-line-comment/__snapshots__/attr-multi-line-comment.expected.txt b/src/__tests__/fixtures/attr-multi-line-comment/__snapshots__/attr-multi-line-comment.expected.txt index 5ef1f59a..6fc7849d 100644 --- a/src/__tests__/fixtures/attr-multi-line-comment/__snapshots__/attr-multi-line-comment.expected.txt +++ b/src/__tests__/fixtures/attr-multi-line-comment/__snapshots__/attr-multi-line-comment.expected.txt @@ -1,12 +1,14 @@ 1╭─ test - │ │ │││ │││ ││ │ ╰─ closeTag(a).value - │ │ │││ │││ ││ ╰─ closeTag(a) "" - │ │ │││ │││ │╰─ text "test" - │ │ │││ │││ ╰─ openTagEnd - │ │ │││ ││╰─ attrValue.value "a+'123'" - │ │ │││ │╰─ attrValue "=a+'123'" - │ │ │││ ╰─ attrName - │ │ ││╰─ attrValue.value "123+456/* test */" - │ │ │╰─ attrValue "=123+456/* test */" - │ │ ╰─ attrName - ╰─ ╰─ tagName \ No newline at end of file + │ ││ │││ │││ ││ │ │╰─ closeTagEnd(a) + │ ││ │││ │││ ││ │ ╰─ closeTagName + │ ││ │││ │││ ││ ╰─ closeTagStart " - │ ││ ╰─ closeTag(div).value "div" - │ │╰─ closeTag(div) "" + │ ││ │ ╰─ closeTagEnd(div) + │ ││ ╰─ closeTagName "div" + │ │╰─ closeTagStart " - │ │ │ ││ ╰─ openTagEnd:selfClosed "/>" - │ │ │ │╰─ attrValue.value "({ a: /[}]/ })" - │ │ │ ╰─ attrValue "=({ a: /[}]/ })" - │ │ ╰─ attrName "hello" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ╰─ openTagEnd:selfClosed "/>" + │ ││ │ │╰─ attrValue.value "({ a: /[}]/ })" + │ ││ │ ╰─ attrValue "=({ a: /[}]/ })" + │ ││ ╰─ attrName "hello" + │ │╰─ tagName "div" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/attr-no-value-self-closed/__snapshots__/attr-no-value-self-closed.expected.txt b/src/__tests__/fixtures/attr-no-value-self-closed/__snapshots__/attr-no-value-self-closed.expected.txt index 3eddbc24..5115ce6f 100644 --- a/src/__tests__/fixtures/attr-no-value-self-closed/__snapshots__/attr-no-value-self-closed.expected.txt +++ b/src/__tests__/fixtures/attr-no-value-self-closed/__snapshots__/attr-no-value-self-closed.expected.txt @@ -1,4 +1,5 @@ 1╭─ - │ │ │ ╰─ openTagEnd:selfClosed "/>" - │ │ ╰─ attrName "foo" - ╰─ ╰─ tagName "var" \ No newline at end of file + │ ││ │ ╰─ openTagEnd:selfClosed "/>" + │ ││ ╰─ attrName "foo" + │ │╰─ tagName "var" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/attr-no-value/__snapshots__/attr-no-value.expected.txt b/src/__tests__/fixtures/attr-no-value/__snapshots__/attr-no-value.expected.txt index ba770cd6..3139f8eb 100644 --- a/src/__tests__/fixtures/attr-no-value/__snapshots__/attr-no-value.expected.txt +++ b/src/__tests__/fixtures/attr-no-value/__snapshots__/attr-no-value.expected.txt @@ -1,7 +1,9 @@ 1╭─ test - │ │ │││ │ ╰─ closeTag(a).value - │ │ │││ ╰─ closeTag(a) "" - │ │ ││╰─ text "test" - │ │ │╰─ openTagEnd - │ │ ╰─ attrName - ╰─ ╰─ tagName \ No newline at end of file + │ ││ │││ │ │╰─ closeTagEnd(a) + │ ││ │││ │ ╰─ closeTagName + │ ││ │││ ╰─ closeTagStart " - │ │ │ ││ │││ │││ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │││ │││ │ ││ │╰─ closeTag(div) "" - │ │ │ ││ │││ │││ │ ││ ╰─ openTagEnd - │ │ │ ││ │││ │││ │ │╰─ attrValue.value "`foo`" - │ │ │ ││ │││ │││ │ ╰─ attrValue "=`foo`" - │ │ │ ││ │││ │││ ╰─ attrName "template-string" - │ │ │ ││ │││ ││╰─ attrValue.value "'foo'+'bar'" - │ │ │ ││ │││ │╰─ attrValue "='foo'+'bar'" - │ │ │ ││ │││ ╰─ attrName - │ │ │ ││ ││╰─ attrValue.value "a+b" - │ │ │ ││ │╰─ attrValue "=a+b" - │ │ │ ││ ╰─ attrName - │ │ │ │╰─ attrValue.value "('a')" - │ │ │ ╰─ attrValue "=('a')" - │ │ ╰─ attrName "data" - ╰─ ╰─ tagName "div" + │ ││ │ ││ │││ │││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ │││ │││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │││ │││ │ ││ │╰─ closeTagStart " - │ ││ ╰─ closeTag(a).value - │ │╰─ closeTag(a) "" + │ ││ │╰─ closeTagEnd(a) + │ ││ ╰─ closeTagName + │ │╰─ closeTagStart "=\ny" │ │├─ attrValue "=x >=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 51╭─ y a @@ -226,7 +226,7 @@ │ ││╰─ attrValue.value "x &=\ny" │ │├─ attrValue "=x &=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 53╭─ y a @@ -235,7 +235,7 @@ │ ││╰─ attrValue.value "x &&=\ny" │ │├─ attrValue "=x &&=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 55╭─ y a @@ -244,7 +244,7 @@ │ ││╰─ attrValue.value "x |=\ny" │ │├─ attrValue "=x |=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 57╭─ y a @@ -253,7 +253,7 @@ │ ││╰─ attrValue.value "x ||=\ny" │ │├─ attrValue "=x ||=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 59╭─ y a @@ -262,7 +262,7 @@ │ ││╰─ attrValue.value "x ^=\ny" │ │├─ attrValue "=x ^=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 61╭─ y a @@ -271,7 +271,7 @@ │ ││╰─ attrValue.value "x ~=\ny" │ │├─ attrValue "=x ~=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 63╭─ y a @@ -280,7 +280,7 @@ │ ││╰─ attrValue.value "x >>=\ny" │ │├─ attrValue "=x >>=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 65╭─ y a @@ -289,7 +289,7 @@ │ ││╰─ attrValue.value "x >>>=\ny" │ │├─ attrValue "=x >>>=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 67╭─ y a @@ -298,7 +298,7 @@ │ ││╰─ attrValue.value "x -=\ny" │ │├─ attrValue "=x -=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 69╭─ y a @@ -307,7 +307,7 @@ │ ││╰─ attrValue.value "x /=\ny" │ │├─ attrValue "=x /=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 71╭─ y a @@ -316,7 +316,7 @@ │ ││╰─ attrValue.value "x *=\ny" │ │├─ attrValue "=x *=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 73╭─ y a @@ -325,7 +325,7 @@ │ ││╰─ attrValue.value "x **=\ny" │ │├─ attrValue "=x **=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 75╭─ y a @@ -334,7 +334,7 @@ │ ││╰─ attrValue.value "x %=\ny" │ │├─ attrValue "=x %=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 77╭─ y a @@ -343,7 +343,7 @@ │ ││╰─ attrValue.value "x +=\ny" │ │├─ attrValue "=x +=\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 79╭─ y a @@ -352,7 +352,7 @@ │ ││╰─ attrValue.value "x ++ +\ny" │ │├─ attrValue "=x ++ +\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 81╭─ y a @@ -361,7 +361,7 @@ │ ││╰─ attrValue.value "x +\n++ y" │ │├─ attrValue "=x +\n++ y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 83╭─ ++ y a @@ -370,7 +370,7 @@ │ ││╰─ attrValue.value "x >>\ny" │ │├─ attrValue "=x >>\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 85╭─ y a @@ -379,7 +379,7 @@ │ ││╰─ attrValue.value "x >>>\ny" │ │├─ attrValue "=x >>>\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 87╭─ y a @@ -388,7 +388,7 @@ │ ││╰─ attrValue.value "x =>\ny" │ │├─ attrValue "=x =>\ny" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 89╭─ y a @@ -397,7 +397,7 @@ │ ││╰─ attrValue.value "x =>\n( y )" │ │├─ attrValue "=x =>\n( y )" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 91╭─ ( y ) a @@ -406,7 +406,7 @@ │ ││ ╰─ attrValue.value "(x) =>\n{ console.log(\"y\") }" │ │├─ attrValue "= (x) =>\n{ console.log(\"y\") }" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 93╭─ { console.log("y") } a @@ -415,50 +415,50 @@ │ ││ ╰─ attrValue.value "async\nx =>\n{ console.log(\"y\") }" │ │├─ attrValue "= async\nx =>\n{ console.log(\"y\") }" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 95├─ x => 96├─ { console.log("y") } 97╭─ a - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 98╭─ a= function │ ││ ╰─ attrValue.value "function\n(x) { console.log(\"y\") }" │ │├─ attrValue "= function\n(x) { console.log(\"y\") }" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 99├─ (x) { console.log("y") } 100╭─ a - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 101╭─ a= x => │ ││ ╰─ attrValue.value "x =>\n{ console.log(\"y\") }" │ │├─ attrValue "= x =>\n{ console.log(\"y\") }" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 102├─ { console.log("y") } 103╭─ a - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 104╭─ a= async │ ││ ╰─ attrValue.value "async\nfunction\n(x) { console.log(\"y\") }" │ │├─ attrValue "= async\nfunction\n(x) { console.log(\"y\") }" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 105├─ function 106├─ (x) { console.log("y") } 107╭─ a - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 108╭─ @@ -468,413 +468,464 @@ │ ││├─ attrValue "= await\ny" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ closeTag(a) + │ ├─ closeTagEnd(a) + ╰─ ╰─ openTagStart 110╭─ y a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 111╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 113╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 115╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 117╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 120╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 122╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 124╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 126╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 128╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 130╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 132╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 134╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 136╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 138╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 140╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 142╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 144╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 146╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 149╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 151╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 153╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 155╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 157╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 159╭─ = - │ ││╰─ attrValue.value "x >=\ny" - │ │├─ attrValue "=x >=\ny" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x >=\ny" + │ ││├─ attrValue "=x >=\ny" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 160╭─ y a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 161╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 163╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 165╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 167╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 169╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 171╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 173╭─ >= - │ ││╰─ attrValue.value "x >>=\ny" - │ │├─ attrValue "=x >>=\ny" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x >>=\ny" + │ ││├─ attrValue "=x >>=\ny" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 174╭─ y a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 175╭─ >>= - │ ││╰─ attrValue.value "x >>>=\ny" - │ │├─ attrValue "=x >>>=\ny" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x >>>=\ny" + │ ││├─ attrValue "=x >>>=\ny" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 176╭─ y a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 177╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 179╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 181╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 183╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 185╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 187╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 189╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 191╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 193╭─ > - │ ││╰─ attrValue.value "x >>\ny" - │ │├─ attrValue "=x >>\ny" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x >>\ny" + │ ││├─ attrValue "=x >>\ny" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 194╭─ y a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 195╭─ >> - │ ││╰─ attrValue.value "x >>>\ny" - │ │├─ attrValue "=x >>>\ny" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x >>>\ny" + │ ││├─ attrValue "=x >>>\ny" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 196╭─ y a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 197╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 199╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 201╭─ \ny" - │ │├─ attrValue "=x\n=>\ny" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x\n=>\ny" + │ ││├─ attrValue "=x\n=>\ny" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 202├─ => 203╭─ y a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 204╭─ \n( y )" - │ │├─ attrValue "=x\n=>\n( y )" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x\n=>\n( y )" + │ ││├─ attrValue "=x\n=>\n( y )" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 205├─ => 206╭─ ( y ) a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 207╭─ \n{ y }" - │ │├─ attrValue "=x\n=>\n{ y }" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x\n=>\n{ y }" + │ ││├─ attrValue "=x\n=>\n{ y }" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 208├─ => 209╭─ { y } a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 210╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 212╭─ \n{ console.log(\"y\") }" - │ │├─ attrValue "= (x)\n=>\n{ console.log(\"y\") }" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││ ╰─ attrValue.value "(x)\n=>\n{ console.log(\"y\") }" + │ ││├─ attrValue "= (x)\n=>\n{ console.log(\"y\") }" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 213├─ => 214╭─ { console.log("y") } a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 215╭─ \n{ console.log(\"y\") }" - │ │├─ attrValue "= async\nx\n=>\n{ console.log(\"y\") }" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││ ╰─ attrValue.value "async\nx\n=>\n{ console.log(\"y\") }" + │ ││├─ attrValue "= async\nx\n=>\n{ console.log(\"y\") }" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 216├─ x 217├─ => 218├─ { console.log("y") } @@ -882,30 +933,33 @@ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 220╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 224╭─ \n{ console.log(\"y\") }" - │ │├─ attrValue "= x\n=>\n{ console.log(\"y\") }" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││ ╰─ attrValue.value "x\n=>\n{ console.log(\"y\") }" + │ ││├─ attrValue "= x\n=>\n{ console.log(\"y\") }" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 225├─ => 226├─ { console.log("y") } 227╭─ a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 228╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 8╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 10╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 12╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 14╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 16╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 18╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 20╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 22╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 24╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 26╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 28╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 30╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 32╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 35╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 37╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 39╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 41╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 43╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 45╭─ = y" - │ │├─ attrValue "=x\n>= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x\n>= y" + │ ││├─ attrValue "=x\n>= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 46╭─ >= y a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 47╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 49╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 51╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 53╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 55╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 57╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 59╭─ >= y" - │ │├─ attrValue "=x\n>>= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x\n>>= y" + │ ││├─ attrValue "=x\n>>= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 60╭─ >>= y a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 61╭─ >>= y" - │ │├─ attrValue "=x\n>>>= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x\n>>>= y" + │ ││├─ attrValue "=x\n>>>= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 62╭─ >>>= y a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 63╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 65╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 67╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 69╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 71╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 73╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 75╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 77╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 79╭─ >y" - │ │├─ attrValue "=x\n>>y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x\n>>y" + │ ││├─ attrValue "=x\n>>y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 80╭─ >>y a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 81╭─ >> y" - │ │├─ attrValue "=x\n>>> y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x\n>>> y" + │ ││├─ attrValue "=x\n>>> y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 82╭─ >>> y a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 83╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 85╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 87╭─ \ny" - │ │├─ attrValue "=x\n=>\ny" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x\n=>\ny" + │ ││├─ attrValue "=x\n=>\ny" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 88├─ => 89╭─ y a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 90╭─ \n( y )" - │ │├─ attrValue "=x\n=>\n( y )" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x\n=>\n( y )" + │ ││├─ attrValue "=x\n=>\n( y )" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 91├─ => 92╭─ ( y ) a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 93╭─ \n{ y }" - │ │├─ attrValue "=x\n=>\n{ y }" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││╰─ attrValue.value "x\n=>\n{ y }" + │ ││├─ attrValue "=x\n=>\n{ y }" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 94├─ => 95╭─ { y } a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 96╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 98╭─ \n{ console.log(\"y\") }" - │ │├─ attrValue "= (x)\n=>\n{ console.log(\"y\") }" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││ ╰─ attrValue.value "(x)\n=>\n{ console.log(\"y\") }" + │ ││├─ attrValue "= (x)\n=>\n{ console.log(\"y\") }" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 99├─ => 100╭─ { console.log("y") } a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 101╭─ \n{ console.log(\"y\") }" - │ │├─ attrValue "= async\nx\n=>\n{ console.log(\"y\") }" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││ ╰─ attrValue.value "async\nx\n=>\n{ console.log(\"y\") }" + │ ││├─ attrValue "= async\nx\n=>\n{ console.log(\"y\") }" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 102├─ x 103├─ => 104├─ { console.log("y") } @@ -395,30 +441,33 @@ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 106╭─ │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 110╭─ \n{ console.log(\"y\") }" - │ │├─ attrValue "= x\n=>\n{ console.log(\"y\") }" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││ ╰─ attrValue.value "x\n=>\n{ console.log(\"y\") }" + │ ││├─ attrValue "= x\n=>\n{ console.log(\"y\") }" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 111├─ => 112├─ { console.log("y") } 113╭─ a/> │ │╰─ openTagEnd:selfClosed "/>" ╰─ ╰─ attrName 114╭─ = y a @@ -153,7 +153,7 @@ │ ││╰─ attrValue.value "x>= y" │ │├─ attrValue "=x>= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 21╭─ a=x&= y a @@ -161,7 +161,7 @@ │ ││╰─ attrValue.value "x&= y" │ │├─ attrValue "=x&= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 22╭─ a=x&&= y a @@ -169,7 +169,7 @@ │ ││╰─ attrValue.value "x&&= y" │ │├─ attrValue "=x&&= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 23╭─ a=x|= y a @@ -177,7 +177,7 @@ │ ││╰─ attrValue.value "x|= y" │ │├─ attrValue "=x|= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 24╭─ a=x||= y a @@ -185,7 +185,7 @@ │ ││╰─ attrValue.value "x||= y" │ │├─ attrValue "=x||= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 25╭─ a=x^= y a @@ -193,7 +193,7 @@ │ ││╰─ attrValue.value "x^= y" │ │├─ attrValue "=x^= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 26╭─ a=x~= y a @@ -201,7 +201,7 @@ │ ││╰─ attrValue.value "x~= y" │ │├─ attrValue "=x~= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 27╭─ a=x>>= y a @@ -209,7 +209,7 @@ │ ││╰─ attrValue.value "x>>= y" │ │├─ attrValue "=x>>= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 28╭─ a=x>>>= y a @@ -217,7 +217,7 @@ │ ││╰─ attrValue.value "x>>>= y" │ │├─ attrValue "=x>>>= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 29╭─ a=x-= y a @@ -225,7 +225,7 @@ │ ││╰─ attrValue.value "x-= y" │ │├─ attrValue "=x-= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 30╭─ a=x/= y a @@ -233,7 +233,7 @@ │ ││╰─ attrValue.value "x/= y" │ │├─ attrValue "=x/= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 31╭─ a=x*= y a @@ -241,7 +241,7 @@ │ ││╰─ attrValue.value "x*= y" │ │├─ attrValue "=x*= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 32╭─ a=x**= y a @@ -249,7 +249,7 @@ │ ││╰─ attrValue.value "x**= y" │ │├─ attrValue "=x**= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 33╭─ a=x%= y a @@ -257,7 +257,7 @@ │ ││╰─ attrValue.value "x%= y" │ │├─ attrValue "=x%= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 34╭─ a=x+= y a @@ -265,7 +265,7 @@ │ ││╰─ attrValue.value "x+= y" │ │├─ attrValue "=x+= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 35╭─ a=x++ + y a @@ -273,7 +273,7 @@ │ ││╰─ attrValue.value "x++ + y" │ │├─ attrValue "=x++ + y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 36╭─ a=x+ ++ y a @@ -281,7 +281,7 @@ │ ││╰─ attrValue.value "x+ ++ y" │ │├─ attrValue "=x+ ++ y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 37╭─ a=x> y a @@ -289,7 +289,7 @@ │ ││╰─ attrValue.value "x> y" │ │├─ attrValue "=x> y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 38╭─ a=x>> y a @@ -297,7 +297,7 @@ │ ││╰─ attrValue.value "x>> y" │ │├─ attrValue "=x>> y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 39╭─ a=x>>> y a @@ -305,7 +305,7 @@ │ ││╰─ attrValue.value "x>>> y" │ │├─ attrValue "=x>>> y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 40╭─ a=x( y) a @@ -313,7 +313,7 @@ │ ││╰─ attrValue.value "x( y)" │ │├─ attrValue "=x( y)" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 41╭─ a=x{ y} a @@ -321,7 +321,7 @@ │ ││╰─ attrValue.value "x{ y}" │ │├─ attrValue "=x{ y}" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 42╭─ a=x=> y a @@ -329,7 +329,7 @@ │ ││╰─ attrValue.value "x=> y" │ │├─ attrValue "=x=> y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 43╭─ a=x=> (y ) a @@ -337,7 +337,7 @@ │ ││╰─ attrValue.value "x=> (y )" │ │├─ attrValue "=x=> (y )" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 44╭─ a=x=> {y } a @@ -345,7 +345,7 @@ │ ││╰─ attrValue.value "x=> {y }" │ │├─ attrValue "=x=> {y }" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 45╭─ a=(x ) {y } a @@ -353,7 +353,7 @@ │ ││╰─ attrValue.value "(x ) {y }" │ │├─ attrValue "=(x ) {y }" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 46╭─ @@ -365,147 +365,168 @@ │ ││├─ attrValue "=x. y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ closeTag(a) + │ ├─ closeTagEnd(a) + ╰─ ╰─ openTagStart 48╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x! y" - │ │├─ attrValue "=x! y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x! y" + │ ││├─ attrValue "=x! y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 49╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x* y" - │ │├─ attrValue "=x* y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x* y" + │ ││├─ attrValue "=x* y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 50╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x/ y" - │ │├─ attrValue "=x/ y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x/ y" + │ ││├─ attrValue "=x/ y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 51╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x** y" - │ │├─ attrValue "=x** y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x** y" + │ ││├─ attrValue "=x** y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 52╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x% y" - │ │├─ attrValue "=x% y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x% y" + │ ││├─ attrValue "=x% y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 53╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x& y" - │ │├─ attrValue "=x& y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x& y" + │ ││├─ attrValue "=x& y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 54╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x&& y" - │ │├─ attrValue "=x&& y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x&& y" + │ ││├─ attrValue "=x&& y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 55╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x^ y" - │ │├─ attrValue "=x^ y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x^ y" + │ ││├─ attrValue "=x^ y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 56╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x~ y" - │ │├─ attrValue "=x~ y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x~ y" + │ ││├─ attrValue "=x~ y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 57╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x| y" - │ │├─ attrValue "=x| y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x| y" + │ ││├─ attrValue "=x| y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 58╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x|| y" - │ │├─ attrValue "=x|| y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x|| y" + │ ││├─ attrValue "=x|| y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 59╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x?? y" - │ │├─ attrValue "=x?? y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x?? y" + │ ││├─ attrValue "=x?? y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 60╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x? y: z" - │ │├─ attrValue "=x? y: z" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x? y: z" + │ ││├─ attrValue "=x? y: z" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 61╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x== y" - │ │├─ attrValue "=x== y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x== y" + │ ││├─ attrValue "=x== y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 62╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x=== y" - │ │├─ attrValue "=x=== y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x=== y" + │ ││├─ attrValue "=x=== y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 63╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x!= y" - │ │├─ attrValue "=x!= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x!= y" + │ ││├─ attrValue "=x!= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 64╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x!== y" - │ │├─ attrValue "=x!== y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x!== y" + │ ││├─ attrValue "=x!== y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 65╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x<= y" - │ │├─ attrValue "=x<= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x<= y" + │ ││├─ attrValue "=x<= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 66╭─ = y a/> - │ ││││╰─ text "= y a/>\n" - │ │││╰─ openTagEnd - │ ││╰─ attrValue.value - │ │├─ attrValue "=x" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││││╰─ text "= y a/>\n" + │ ││││╰─ openTagEnd + │ │││╰─ attrValue.value + │ ││├─ attrValue "=x" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 67╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x&= y" - │ │├─ attrValue "=x&= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x&= y" + │ ││├─ attrValue "=x&= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 68╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -513,7 +534,8 @@ │ ││├─ attrValue "=x&&= y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 69╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -521,7 +543,8 @@ │ ││├─ attrValue "=x|= y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 70╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -529,7 +552,8 @@ │ ││├─ attrValue "=x||= y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 71╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -537,7 +561,8 @@ │ ││├─ attrValue "=x^= y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 72╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -545,7 +570,8 @@ │ ││├─ attrValue "=x~= y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 73╭─ >= y a/> │ │││││╰─ text ">= y a/>\n" │ ││││╰─ openTagEnd @@ -553,21 +579,24 @@ │ ││├─ attrValue "=x" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 74╭─ >>= y a/> - │ ││││╰─ text ">>= y a/>\n" - │ │││╰─ openTagEnd - │ ││╰─ attrValue.value - │ │├─ attrValue "=x" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││││╰─ text ">>= y a/>\n" + │ ││││╰─ openTagEnd + │ │││╰─ attrValue.value + │ ││├─ attrValue "=x" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 75╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x-= y" - │ │├─ attrValue "=x-= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x-= y" + │ ││├─ attrValue "=x-= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 76╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -575,7 +604,8 @@ │ ││├─ attrValue "=x/= y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 77╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -583,7 +613,8 @@ │ ││├─ attrValue "=x*= y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 78╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -591,7 +622,8 @@ │ ││├─ attrValue "=x**= y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 79╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -599,7 +631,8 @@ │ ││├─ attrValue "=x%= y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 80╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -607,7 +640,8 @@ │ ││├─ attrValue "=x+= y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 81╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -615,7 +649,8 @@ │ ││├─ attrValue "=x++ + y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 82╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -623,17 +658,20 @@ │ ││├─ attrValue "=x+ ++ y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 83╭─ y - │ ││││││ │╰─ openTagEnd:selfClosed "/>" - │ ││││││ ╰─ tagName + │ ││││││ ││╰─ openTagEnd:selfClosed "/>" + │ ││││││ │╰─ tagName + │ ││││││ ╰─ openTagStart │ │││││╰─ text " y " │ ││││╰─ openTagEnd │ │││╰─ attrValue.value │ ││├─ attrValue "=x" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 84╭─ > y a/> │ │││││╰─ text "> y a/>\n" │ ││││╰─ openTagEnd @@ -641,21 +679,24 @@ │ ││├─ attrValue "=x" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 85╭─ >> y a/> - │ ││││╰─ text ">> y a/>\n" - │ │││╰─ openTagEnd - │ ││╰─ attrValue.value - │ │├─ attrValue "=x" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││││╰─ text ">> y a/>\n" + │ ││││╰─ openTagEnd + │ │││╰─ attrValue.value + │ ││├─ attrValue "=x" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 86╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x(y )" - │ │├─ attrValue "=x(y )" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x(y )" + │ ││├─ attrValue "=x(y )" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 87╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -663,7 +704,8 @@ │ ││├─ attrValue "=z {y }" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 88╭─ y a/> │ ││││ │╰─ text " y a/>\n" │ ││││ ╰─ openTagEnd @@ -671,14 +713,16 @@ │ ││├─ attrValue "=x=" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 89╭─ (y ) a/> - │ │││ │╰─ text " (y ) a/>\n" - │ │││ ╰─ openTagEnd - │ ││╰─ attrValue.value "x=" - │ │├─ attrValue "=x=" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ text " (y ) a/>\n" + │ ││││ ╰─ openTagEnd + │ │││╰─ attrValue.value "x=" + │ ││├─ attrValue "=x=" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 90╭─ {y } a/> │ ││││ │╰─ text " {y } a/>\n" │ ││││ ╰─ openTagEnd @@ -686,13 +730,15 @@ │ ││├─ attrValue "=x=" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ error(MISSING_END_TAG:Missing ending "a" tag) "" + │ ├─ error(MISSING_END_TAG:Missing ending "a" tag) "" + ╰─ ╰─ openTagStart 91╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "(x ) {y }" - │ │├─ attrValue "=(x ) {y }" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "(x ) {y }" + │ ││├─ attrValue "=(x ) {y }" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 92╭─ ╰─ ╰─ text "\n" \ No newline at end of file diff --git a/src/__tests__/fixtures/attr-operators-space-before/__snapshots__/attr-operators-space-before.expected.txt b/src/__tests__/fixtures/attr-operators-space-before/__snapshots__/attr-operators-space-before.expected.txt index cb85e90c..9290fab3 100644 --- a/src/__tests__/fixtures/attr-operators-space-before/__snapshots__/attr-operators-space-before.expected.txt +++ b/src/__tests__/fixtures/attr-operators-space-before/__snapshots__/attr-operators-space-before.expected.txt @@ -9,7 +9,7 @@ │ ││╰─ attrValue.value "x !y" │ │├─ attrValue "=x !y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 3╭─ a=x *y a @@ -17,7 +17,7 @@ │ ││╰─ attrValue.value "x *y" │ │├─ attrValue "=x *y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 4╭─ a=x /y a @@ -25,7 +25,7 @@ │ ││╰─ attrValue.value "x /y" │ │├─ attrValue "=x /y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 5╭─ a=x **y a @@ -33,7 +33,7 @@ │ ││╰─ attrValue.value "x **y" │ │├─ attrValue "=x **y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 6╭─ a=x %y a @@ -41,7 +41,7 @@ │ ││╰─ attrValue.value "x %y" │ │├─ attrValue "=x %y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 7╭─ a=x &y a @@ -49,7 +49,7 @@ │ ││╰─ attrValue.value "x &y" │ │├─ attrValue "=x &y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 8╭─ a=x &&y a @@ -57,7 +57,7 @@ │ ││╰─ attrValue.value "x &&y" │ │├─ attrValue "=x &&y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 9╭─ a=x ^y a @@ -65,7 +65,7 @@ │ ││╰─ attrValue.value "x ^y" │ │├─ attrValue "=x ^y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 10╭─ a=x ~y a @@ -73,7 +73,7 @@ │ ││╰─ attrValue.value "x ~y" │ │├─ attrValue "=x ~y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 11╭─ a=x |y a @@ -81,7 +81,7 @@ │ ││╰─ attrValue.value "x |y" │ │├─ attrValue "=x |y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 12╭─ a=x ||y a @@ -89,7 +89,7 @@ │ ││╰─ attrValue.value "x ||y" │ │├─ attrValue "=x ||y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 13╭─ a=x ??y a @@ -97,7 +97,7 @@ │ ││╰─ attrValue.value "x ??y" │ │├─ attrValue "=x ??y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 14╭─ a=x ?y :z a @@ -105,7 +105,7 @@ │ ││╰─ attrValue.value "x ?y :z" │ │├─ attrValue "=x ?y :z" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 15╭─ a=x ==y a @@ -113,7 +113,7 @@ │ ││╰─ attrValue.value "x ==y" │ │├─ attrValue "=x ==y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 16╭─ a=x ===y a @@ -121,7 +121,7 @@ │ ││╰─ attrValue.value "x ===y" │ │├─ attrValue "=x ===y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 17╭─ a=x !=y a @@ -129,7 +129,7 @@ │ ││╰─ attrValue.value "x !=y" │ │├─ attrValue "=x !=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 18╭─ a=x !==y a @@ -137,7 +137,7 @@ │ ││╰─ attrValue.value "x !==y" │ │├─ attrValue "=x !==y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 19╭─ a=x <=y a @@ -145,7 +145,7 @@ │ ││╰─ attrValue.value "x <=y" │ │├─ attrValue "=x <=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 20╭─ a=x >=y a @@ -153,7 +153,7 @@ │ ││╰─ attrValue.value "x >=y" │ │├─ attrValue "=x >=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 21╭─ a=x &=y a @@ -161,7 +161,7 @@ │ ││╰─ attrValue.value "x &=y" │ │├─ attrValue "=x &=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 22╭─ a=x &&=y a @@ -169,7 +169,7 @@ │ ││╰─ attrValue.value "x &&=y" │ │├─ attrValue "=x &&=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 23╭─ a=x |=y a @@ -177,7 +177,7 @@ │ ││╰─ attrValue.value "x |=y" │ │├─ attrValue "=x |=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 24╭─ a=x ||=y a @@ -185,7 +185,7 @@ │ ││╰─ attrValue.value "x ||=y" │ │├─ attrValue "=x ||=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 25╭─ a=x ^=y a @@ -193,7 +193,7 @@ │ ││╰─ attrValue.value "x ^=y" │ │├─ attrValue "=x ^=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 26╭─ a=x ~=y a @@ -201,7 +201,7 @@ │ ││╰─ attrValue.value "x ~=y" │ │├─ attrValue "=x ~=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 27╭─ a=x >>=y a @@ -209,7 +209,7 @@ │ ││╰─ attrValue.value "x >>=y" │ │├─ attrValue "=x >>=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 28╭─ a=x >>>=y a @@ -217,7 +217,7 @@ │ ││╰─ attrValue.value "x >>>=y" │ │├─ attrValue "=x >>>=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 29╭─ a=x -=y a @@ -225,7 +225,7 @@ │ ││╰─ attrValue.value "x -=y" │ │├─ attrValue "=x -=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 30╭─ a=x /=y a @@ -233,7 +233,7 @@ │ ││╰─ attrValue.value "x /=y" │ │├─ attrValue "=x /=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 31╭─ a=x *=y a @@ -241,7 +241,7 @@ │ ││╰─ attrValue.value "x *=y" │ │├─ attrValue "=x *=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 32╭─ a=x **=y a @@ -249,7 +249,7 @@ │ ││╰─ attrValue.value "x **=y" │ │├─ attrValue "=x **=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 33╭─ a=x %=y a @@ -257,7 +257,7 @@ │ ││╰─ attrValue.value "x %=y" │ │├─ attrValue "=x %=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 34╭─ a=x +=y a @@ -265,7 +265,7 @@ │ ││╰─ attrValue.value "x +=y" │ │├─ attrValue "=x +=y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 35╭─ a=x++ +y a @@ -273,7 +273,7 @@ │ ││╰─ attrValue.value "x++ +y" │ │├─ attrValue "=x++ +y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 36╭─ a=x+ ++y a @@ -281,7 +281,7 @@ │ ││╰─ attrValue.value "x+ ++y" │ │├─ attrValue "=x+ ++y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 37╭─ a=x >y a @@ -289,7 +289,7 @@ │ ││╰─ attrValue.value "x >y" │ │├─ attrValue "=x >y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 38╭─ a=x >>y a @@ -297,7 +297,7 @@ │ ││╰─ attrValue.value "x >>y" │ │├─ attrValue "=x >>y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 39╭─ a=x >>>y a @@ -305,7 +305,7 @@ │ ││╰─ attrValue.value "x >>>y" │ │├─ attrValue "=x >>>y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 40╭─ a=x (y ) a @@ -313,7 +313,7 @@ │ ││╰─ attrValue.value "x (y )" │ │├─ attrValue "=x (y )" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 41╭─ a=x {y } a @@ -321,7 +321,7 @@ │ ││╰─ attrValue.value "x {y }" │ │├─ attrValue "=x {y }" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 42╭─ a=x =>y a @@ -329,7 +329,7 @@ │ ││╰─ attrValue.value "x =>y" │ │├─ attrValue "=x =>y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 43╭─ a=x => (y ) a @@ -337,7 +337,7 @@ │ ││╰─ attrValue.value "x => (y )" │ │├─ attrValue "=x => (y )" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 44╭─ a=x => {y } a @@ -345,7 +345,7 @@ │ ││╰─ attrValue.value "x => {y }" │ │├─ attrValue "=x => {y }" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 45╭─ a=( x ) {y } a @@ -353,7 +353,7 @@ │ ││╰─ attrValue.value "( x ) {y }" │ │├─ attrValue "=( x ) {y }" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 46╭─ @@ -365,262 +365,300 @@ │ ││├─ attrValue "=x .y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ closeTag(a) + │ ├─ closeTagEnd(a) + ╰─ ╰─ openTagStart 48╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x !y" - │ │├─ attrValue "=x !y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x !y" + │ ││├─ attrValue "=x !y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 49╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x *y" - │ │├─ attrValue "=x *y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x *y" + │ ││├─ attrValue "=x *y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 50╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x /y" - │ │├─ attrValue "=x /y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x /y" + │ ││├─ attrValue "=x /y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 51╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x **y" - │ │├─ attrValue "=x **y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x **y" + │ ││├─ attrValue "=x **y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 52╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x %y" - │ │├─ attrValue "=x %y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x %y" + │ ││├─ attrValue "=x %y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 53╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x &y" - │ │├─ attrValue "=x &y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x &y" + │ ││├─ attrValue "=x &y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 54╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x &&y" - │ │├─ attrValue "=x &&y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x &&y" + │ ││├─ attrValue "=x &&y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 55╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ^y" - │ │├─ attrValue "=x ^y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ^y" + │ ││├─ attrValue "=x ^y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 56╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ~y" - │ │├─ attrValue "=x ~y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ~y" + │ ││├─ attrValue "=x ~y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 57╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x |y" - │ │├─ attrValue "=x |y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x |y" + │ ││├─ attrValue "=x |y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 58╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ||y" - │ │├─ attrValue "=x ||y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ||y" + │ ││├─ attrValue "=x ||y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 59╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ??y" - │ │├─ attrValue "=x ??y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ??y" + │ ││├─ attrValue "=x ??y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 60╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ?y :z" - │ │├─ attrValue "=x ?y :z" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ?y :z" + │ ││├─ attrValue "=x ?y :z" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 61╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ==y" - │ │├─ attrValue "=x ==y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ==y" + │ ││├─ attrValue "=x ==y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 62╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ===y" - │ │├─ attrValue "=x ===y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ===y" + │ ││├─ attrValue "=x ===y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 63╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x !=y" - │ │├─ attrValue "=x !=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x !=y" + │ ││├─ attrValue "=x !=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 64╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x !==y" - │ │├─ attrValue "=x !==y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x !==y" + │ ││├─ attrValue "=x !==y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 65╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x <=y" - │ │├─ attrValue "=x <=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x <=y" + │ ││├─ attrValue "=x <=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 66╭─ =y a/> - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x >=y" - │ │├─ attrValue "=x >=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x >=y" + │ ││├─ attrValue "=x >=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 67╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x &=y" - │ │├─ attrValue "=x &=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x &=y" + │ ││├─ attrValue "=x &=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 68╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x &&=y" - │ │├─ attrValue "=x &&=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x &&=y" + │ ││├─ attrValue "=x &&=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 69╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x |=y" - │ │├─ attrValue "=x |=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x |=y" + │ ││├─ attrValue "=x |=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 70╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ||=y" - │ │├─ attrValue "=x ||=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ||=y" + │ ││├─ attrValue "=x ||=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 71╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ^=y" - │ │├─ attrValue "=x ^=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ^=y" + │ ││├─ attrValue "=x ^=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 72╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ~=y" - │ │├─ attrValue "=x ~=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ~=y" + │ ││├─ attrValue "=x ~=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 73╭─ >=y a/> - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x >>=y" - │ │├─ attrValue "=x >>=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x >>=y" + │ ││├─ attrValue "=x >>=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 74╭─ >>=y a/> - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x >>>=y" - │ │├─ attrValue "=x >>>=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x >>>=y" + │ ││├─ attrValue "=x >>>=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 75╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x -=y" - │ │├─ attrValue "=x -=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x -=y" + │ ││├─ attrValue "=x -=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 76╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x /=y" - │ │├─ attrValue "=x /=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x /=y" + │ ││├─ attrValue "=x /=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 77╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x *=y" - │ │├─ attrValue "=x *=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x *=y" + │ ││├─ attrValue "=x *=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 78╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x **=y" - │ │├─ attrValue "=x **=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x **=y" + │ ││├─ attrValue "=x **=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 79╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x %=y" - │ │├─ attrValue "=x %=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x %=y" + │ ││├─ attrValue "=x %=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 80╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x +=y" - │ │├─ attrValue "=x +=y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x +=y" + │ ││├─ attrValue "=x +=y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 81╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x++ +y" - │ │├─ attrValue "=x++ +y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x++ +y" + │ ││├─ attrValue "=x++ +y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 82╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x+ ++y" - │ │├─ attrValue "=x+ ++y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x+ ++y" + │ ││├─ attrValue "=x+ ++y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 83╭─ y - │ ││││ ││ │╰─ openTagEnd:selfClosed "/>" - │ ││││ ││ ╰─ tagName + │ ││││ ││ ││╰─ openTagEnd:selfClosed "/>" + │ ││││ ││ │╰─ tagName + │ ││││ ││ ╰─ openTagStart │ ││││ │╰─ text "y " │ ││││ ╰─ openTagEnd │ │││╰─ attrValue.value │ ││├─ attrValue "=x" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ error(MISSING_END_TAG:Missing ending "a" tag) "" + │ ├─ error(MISSING_END_TAG:Missing ending "a" tag) "" + ╰─ ╰─ openTagStart 84╭─ >y a/> │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -628,7 +666,8 @@ │ ││├─ attrValue "=x >>y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 85╭─ >>y a/> │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -636,7 +675,8 @@ │ ││├─ attrValue "=x >>>y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 86╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -644,7 +684,8 @@ │ ││├─ attrValue "=x (y )" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 87╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -652,7 +693,8 @@ │ ││├─ attrValue "=x {y }" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 88╭─ y a/> │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -660,7 +702,8 @@ │ ││├─ attrValue "=x =>y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 89╭─ (y ) a/> │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -668,7 +711,8 @@ │ ││├─ attrValue "=x => (y )" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 90╭─ {y } a/> │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -676,7 +720,8 @@ │ ││├─ attrValue "=x => {y }" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 91╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -684,6 +729,7 @@ │ ││├─ attrValue "=( x ) {y }" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 92╭─ ╰─ ╰─ text "\n" \ No newline at end of file diff --git a/src/__tests__/fixtures/attr-operators-space-between/__snapshots__/attr-operators-space-between.expected.txt b/src/__tests__/fixtures/attr-operators-space-between/__snapshots__/attr-operators-space-between.expected.txt index 0e128333..65d484a0 100644 --- a/src/__tests__/fixtures/attr-operators-space-between/__snapshots__/attr-operators-space-between.expected.txt +++ b/src/__tests__/fixtures/attr-operators-space-between/__snapshots__/attr-operators-space-between.expected.txt @@ -9,7 +9,7 @@ │ │ │ ╰─ attrValue.value "x as keyof other" │ │ ├─ attrValue "= x as keyof other" │ │ ╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 3╭─ a= await y a @@ -17,7 +17,7 @@ │ ││ ╰─ attrValue.value "await y" │ │├─ attrValue "= await y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 4╭─ a= new y a @@ -25,7 +25,7 @@ │ ││ ╰─ attrValue.value "new y" │ │├─ attrValue "= new y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 5╭─ a= void y a @@ -33,7 +33,7 @@ │ ││ ╰─ attrValue.value "void y" │ │├─ attrValue "= void y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 6╭─ a= typeof y a @@ -41,7 +41,7 @@ │ ││ ╰─ attrValue.value "typeof y" │ │├─ attrValue "= typeof y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 7╭─ a= class A extends Y {} a @@ -49,7 +49,7 @@ │ ││ ╰─ attrValue.value "class A extends Y {}" │ │├─ attrValue "= class A extends Y {}" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 8╭─ a=x . y a @@ -57,7 +57,7 @@ │ ││╰─ attrValue.value "x . y" │ │├─ attrValue "=x . y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 9╭─ a=x ! y a @@ -65,7 +65,7 @@ │ ││╰─ attrValue.value "x ! y" │ │├─ attrValue "=x ! y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 10╭─ a=x * y a @@ -73,7 +73,7 @@ │ ││╰─ attrValue.value "x * y" │ │├─ attrValue "=x * y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 11╭─ a=x / y a @@ -81,7 +81,7 @@ │ ││╰─ attrValue.value "x / y" │ │├─ attrValue "=x / y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 12╭─ a=x ** y a @@ -89,7 +89,7 @@ │ ││╰─ attrValue.value "x ** y" │ │├─ attrValue "=x ** y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 13╭─ a=x % y a @@ -97,7 +97,7 @@ │ ││╰─ attrValue.value "x % y" │ │├─ attrValue "=x % y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 14╭─ a=x & y a @@ -105,7 +105,7 @@ │ ││╰─ attrValue.value "x & y" │ │├─ attrValue "=x & y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 15╭─ a=x && y a @@ -113,7 +113,7 @@ │ ││╰─ attrValue.value "x && y" │ │├─ attrValue "=x && y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 16╭─ a=x ^ y a @@ -121,7 +121,7 @@ │ ││╰─ attrValue.value "x ^ y" │ │├─ attrValue "=x ^ y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 17╭─ a=x ~ y a @@ -129,7 +129,7 @@ │ ││╰─ attrValue.value "x ~ y" │ │├─ attrValue "=x ~ y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 18╭─ a=x | y a @@ -137,7 +137,7 @@ │ ││╰─ attrValue.value "x | y" │ │├─ attrValue "=x | y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 19╭─ a=x || y a @@ -145,7 +145,7 @@ │ ││╰─ attrValue.value "x || y" │ │├─ attrValue "=x || y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 20╭─ a=x ?? y a @@ -153,7 +153,7 @@ │ ││╰─ attrValue.value "x ?? y" │ │├─ attrValue "=x ?? y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 21╭─ a=x ? y : z a @@ -161,7 +161,7 @@ │ ││╰─ attrValue.value "x ? y : z" │ │├─ attrValue "=x ? y : z" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 22╭─ a=x == y a @@ -169,7 +169,7 @@ │ ││╰─ attrValue.value "x == y" │ │├─ attrValue "=x == y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 23╭─ a=x === y a @@ -177,7 +177,7 @@ │ ││╰─ attrValue.value "x === y" │ │├─ attrValue "=x === y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 24╭─ a=x != y a @@ -185,7 +185,7 @@ │ ││╰─ attrValue.value "x != y" │ │├─ attrValue "=x != y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 25╭─ a=x !== y a @@ -193,7 +193,7 @@ │ ││╰─ attrValue.value "x !== y" │ │├─ attrValue "=x !== y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 26╭─ a=x <= y a @@ -201,7 +201,7 @@ │ ││╰─ attrValue.value "x <= y" │ │├─ attrValue "=x <= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 27╭─ a=x >= y a @@ -209,7 +209,7 @@ │ ││╰─ attrValue.value "x >= y" │ │├─ attrValue "=x >= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 28╭─ a=x &= y a @@ -217,7 +217,7 @@ │ ││╰─ attrValue.value "x &= y" │ │├─ attrValue "=x &= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 29╭─ a=x &&= y a @@ -225,7 +225,7 @@ │ ││╰─ attrValue.value "x &&= y" │ │├─ attrValue "=x &&= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 30╭─ a=x |= y a @@ -233,7 +233,7 @@ │ ││╰─ attrValue.value "x |= y" │ │├─ attrValue "=x |= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 31╭─ a=x ||= y a @@ -241,7 +241,7 @@ │ ││╰─ attrValue.value "x ||= y" │ │├─ attrValue "=x ||= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 32╭─ a=x ^= y a @@ -249,7 +249,7 @@ │ ││╰─ attrValue.value "x ^= y" │ │├─ attrValue "=x ^= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 33╭─ a=x ~= y a @@ -257,7 +257,7 @@ │ ││╰─ attrValue.value "x ~= y" │ │├─ attrValue "=x ~= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 34╭─ a=x >>= y a @@ -265,7 +265,7 @@ │ ││╰─ attrValue.value "x >>= y" │ │├─ attrValue "=x >>= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 35╭─ a=x >>>= y a @@ -273,7 +273,7 @@ │ ││╰─ attrValue.value "x >>>= y" │ │├─ attrValue "=x >>>= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 36╭─ a=x -= y a @@ -281,7 +281,7 @@ │ ││╰─ attrValue.value "x -= y" │ │├─ attrValue "=x -= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 37╭─ a=x /= y a @@ -289,7 +289,7 @@ │ ││╰─ attrValue.value "x /= y" │ │├─ attrValue "=x /= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 38╭─ a=x *= y a @@ -297,7 +297,7 @@ │ ││╰─ attrValue.value "x *= y" │ │├─ attrValue "=x *= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 39╭─ a=x **= y a @@ -305,7 +305,7 @@ │ ││╰─ attrValue.value "x **= y" │ │├─ attrValue "=x **= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 40╭─ a=x %= y a @@ -313,7 +313,7 @@ │ ││╰─ attrValue.value "x %= y" │ │├─ attrValue "=x %= y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 41╭─ a=x += y a @@ -321,7 +321,7 @@ │ ││╰─ attrValue.value "x += y" │ │├─ attrValue "=x += y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 42╭─ a=x in; @@ -329,7 +329,7 @@ │ ││╰─ attrValue.value │ │├─ attrValue "=x" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 43╭─ a=x in y a @@ -337,7 +337,7 @@ │ ││╰─ attrValue.value "x in y" │ │├─ attrValue "=x in y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 44╭─ a=x in=y @@ -347,7 +347,7 @@ │ ││╰─ attrValue.value │ │├─ attrValue "=x" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 45╭─ a=x in, y @@ -356,7 +356,7 @@ │ ││╰─ attrValue.value │ │├─ attrValue "=x" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 46╭─ a=x instanceof y a @@ -364,7 +364,7 @@ │ ││╰─ attrValue.value "x instanceof y" │ │├─ attrValue "=x instanceof y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 47╭─ a=x ++ + y a @@ -372,7 +372,7 @@ │ ││╰─ attrValue.value "x ++ + y" │ │├─ attrValue "=x ++ + y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 48╭─ a=x+ ++ y a @@ -380,7 +380,7 @@ │ ││╰─ attrValue.value "x+ ++ y" │ │├─ attrValue "=x+ ++ y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 49╭─ a=x ++ y a @@ -390,7 +390,7 @@ │ ││╰─ attrValue.value │ │├─ attrValue "=x" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 50╭─ a=x > y a @@ -398,7 +398,7 @@ │ ││╰─ attrValue.value "x > y" │ │├─ attrValue "=x > y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 51╭─ a=x >> y a @@ -406,7 +406,7 @@ │ ││╰─ attrValue.value "x >> y" │ │├─ attrValue "=x >> y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 52╭─ a=x >>> y a @@ -414,7 +414,7 @@ │ ││╰─ attrValue.value "x >>> y" │ │├─ attrValue "=x >>> y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 53╭─ a=x ( y ) a @@ -422,7 +422,7 @@ │ ││╰─ attrValue.value "x ( y )" │ │├─ attrValue "=x ( y )" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 54╭─ a=x { y } a @@ -430,7 +430,7 @@ │ ││╰─ attrValue.value "x { y }" │ │├─ attrValue "=x { y }" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 55╭─ a=x => y a @@ -438,7 +438,7 @@ │ ││╰─ attrValue.value "x => y" │ │├─ attrValue "=x => y" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 56╭─ a=x => ( y ) a @@ -446,7 +446,7 @@ │ ││╰─ attrValue.value "x => ( y )" │ │├─ attrValue "=x => ( y )" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 57╭─ a=x => { y } a @@ -454,7 +454,7 @@ │ ││╰─ attrValue.value "x => { y }" │ │├─ attrValue "=x => { y }" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 58╭─ a=( x ) { y } a @@ -462,7 +462,7 @@ │ ││╰─ attrValue.value "( x ) { y }" │ │├─ attrValue "=( x ) { y }" │ │╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 59╭─ a = (x) => { console.log("y") } a @@ -470,7 +470,7 @@ │ │ │ ╰─ attrValue.value "(x) => { console.log(\"y\") }" │ │ ├─ attrValue "= (x) => { console.log(\"y\") }" │ │ ╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 60╭─ a = async x => { console.log("y") } a @@ -478,7 +478,7 @@ │ │ │ ╰─ attrValue.value "async x => { console.log(\"y\") }" │ │ ├─ attrValue "= async x => { console.log(\"y\") }" │ │ ╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 61╭─ a = function (x) { console.log("y") } a @@ -486,7 +486,7 @@ │ │ │ ╰─ attrValue.value "function (x) { console.log(\"y\") }" │ │ ├─ attrValue "= function (x) { console.log(\"y\") }" │ │ ╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 62╭─ a = x => { console.log("y") } a @@ -494,7 +494,7 @@ │ │ │ ╰─ attrValue.value "x => { console.log(\"y\") }" │ │ ├─ attrValue "= x => { console.log(\"y\") }" │ │ ╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 63╭─ a = async function (x) { console.log("y") } a @@ -502,7 +502,7 @@ │ │ │ ╰─ attrValue.value "async function (x) { console.log(\"y\") }" │ │ ├─ attrValue "= async function (x) { console.log(\"y\") }" │ │ ╰─ attrName - │ ├─ closeTag(a) + │ ├─ closeTagEnd(a) │ ├─ openTagEnd ╰─ ╰─ tagName 64╭─ @@ -514,344 +514,393 @@ │ ││├─ attrValue "= await y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ closeTag(a) + │ ├─ closeTagEnd(a) + ╰─ ╰─ openTagStart 66╭─ - │ ││ │ │╰─ openTagEnd:selfClosed "/>" - │ ││ │ ╰─ attrName - │ ││ ╰─ attrValue.value "new y" - │ │├─ attrValue "= new y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││ │ │╰─ openTagEnd:selfClosed "/>" + │ │││ │ ╰─ attrName + │ │││ ╰─ attrValue.value "new y" + │ ││├─ attrValue "= new y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 67╭─ - │ ││ │ │╰─ openTagEnd:selfClosed "/>" - │ ││ │ ╰─ attrName - │ ││ ╰─ attrValue.value "void y" - │ │├─ attrValue "= void y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││ │ │╰─ openTagEnd:selfClosed "/>" + │ │││ │ ╰─ attrName + │ │││ ╰─ attrValue.value "void y" + │ ││├─ attrValue "= void y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 68╭─ - │ ││ │ │╰─ openTagEnd:selfClosed "/>" - │ ││ │ ╰─ attrName - │ ││ ╰─ attrValue.value "typeof y" - │ │├─ attrValue "= typeof y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││ │ │╰─ openTagEnd:selfClosed "/>" + │ │││ │ ╰─ attrName + │ │││ ╰─ attrValue.value "typeof y" + │ ││├─ attrValue "= typeof y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 69╭─ - │ ││ │ │╰─ openTagEnd:selfClosed "/>" - │ ││ │ ╰─ attrName - │ ││ ╰─ attrValue.value "class A extends Y {}" - │ │├─ attrValue "= class A extends Y {}" - │ │╰─ attrName - ╰─ ╰─ tagName + │ │││ │ │╰─ openTagEnd:selfClosed "/>" + │ │││ │ ╰─ attrName + │ │││ ╰─ attrValue.value "class A extends Y {}" + │ ││├─ attrValue "= class A extends Y {}" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 70╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x . y" - │ │├─ attrValue "=x . y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x . y" + │ ││├─ attrValue "=x . y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 71╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ! y" - │ │├─ attrValue "=x ! y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ! y" + │ ││├─ attrValue "=x ! y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 72╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x * y" - │ │├─ attrValue "=x * y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x * y" + │ ││├─ attrValue "=x * y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 73╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x / y" - │ │├─ attrValue "=x / y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x / y" + │ ││├─ attrValue "=x / y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 74╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ** y" - │ │├─ attrValue "=x ** y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ** y" + │ ││├─ attrValue "=x ** y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 75╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x % y" - │ │├─ attrValue "=x % y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x % y" + │ ││├─ attrValue "=x % y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 76╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x & y" - │ │├─ attrValue "=x & y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x & y" + │ ││├─ attrValue "=x & y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 77╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x && y" - │ │├─ attrValue "=x && y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x && y" + │ ││├─ attrValue "=x && y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 78╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ^ y" - │ │├─ attrValue "=x ^ y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ^ y" + │ ││├─ attrValue "=x ^ y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 79╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ~ y" - │ │├─ attrValue "=x ~ y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ~ y" + │ ││├─ attrValue "=x ~ y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 80╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x | y" - │ │├─ attrValue "=x | y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x | y" + │ ││├─ attrValue "=x | y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 81╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x || y" - │ │├─ attrValue "=x || y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x || y" + │ ││├─ attrValue "=x || y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 82╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ?? y" - │ │├─ attrValue "=x ?? y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ?? y" + │ ││├─ attrValue "=x ?? y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 83╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ? y : z" - │ │├─ attrValue "=x ? y : z" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ? y : z" + │ ││├─ attrValue "=x ? y : z" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 84╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x == y" - │ │├─ attrValue "=x == y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x == y" + │ ││├─ attrValue "=x == y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 85╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x === y" - │ │├─ attrValue "=x === y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x === y" + │ ││├─ attrValue "=x === y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 86╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x != y" - │ │├─ attrValue "=x != y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x != y" + │ ││├─ attrValue "=x != y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 87╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x !== y" - │ │├─ attrValue "=x !== y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x !== y" + │ ││├─ attrValue "=x !== y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 88╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x <= y" - │ │├─ attrValue "=x <= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x <= y" + │ ││├─ attrValue "=x <= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 89╭─ = y a/> - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x >= y" - │ │├─ attrValue "=x >= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x >= y" + │ ││├─ attrValue "=x >= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 90╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x &= y" - │ │├─ attrValue "=x &= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x &= y" + │ ││├─ attrValue "=x &= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 91╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x &&= y" - │ │├─ attrValue "=x &&= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x &&= y" + │ ││├─ attrValue "=x &&= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 92╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x |= y" - │ │├─ attrValue "=x |= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x |= y" + │ ││├─ attrValue "=x |= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 93╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ||= y" - │ │├─ attrValue "=x ||= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ||= y" + │ ││├─ attrValue "=x ||= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 94╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ^= y" - │ │├─ attrValue "=x ^= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ^= y" + │ ││├─ attrValue "=x ^= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 95╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ~= y" - │ │├─ attrValue "=x ~= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ~= y" + │ ││├─ attrValue "=x ~= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 96╭─ >= y a/> - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x >>= y" - │ │├─ attrValue "=x >>= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x >>= y" + │ ││├─ attrValue "=x >>= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 97╭─ >>= y a/> - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x >>>= y" - │ │├─ attrValue "=x >>>= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x >>>= y" + │ ││├─ attrValue "=x >>>= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 98╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x -= y" - │ │├─ attrValue "=x -= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x -= y" + │ ││├─ attrValue "=x -= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 99╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x /= y" - │ │├─ attrValue "=x /= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x /= y" + │ ││├─ attrValue "=x /= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 100╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x *= y" - │ │├─ attrValue "=x *= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x *= y" + │ ││├─ attrValue "=x *= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 101╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x **= y" - │ │├─ attrValue "=x **= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x **= y" + │ ││├─ attrValue "=x **= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 102╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x %= y" - │ │├─ attrValue "=x %= y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x %= y" + │ ││├─ attrValue "=x %= y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 103╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x += y" - │ │├─ attrValue "=x += y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x += y" + │ ││├─ attrValue "=x += y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 104╭─ - │ │││ │ ╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName "in;" - │ ││╰─ attrValue.value - │ │├─ attrValue "=x" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │ ╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName "in;" + │ │││╰─ attrValue.value + │ ││├─ attrValue "=x" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 105╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x in y" - │ │├─ attrValue "=x in y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x in y" + │ ││├─ attrValue "=x in y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 106╭─ - │ │││ │ ││╰─ openTagEnd:selfClosed "/>" - │ │││ │ │╰─ attrValue.value - │ │││ │ ╰─ attrValue "=y" - │ │││ ╰─ attrName "in" - │ ││╰─ attrValue.value - │ │├─ attrValue "=x" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │ ││╰─ openTagEnd:selfClosed "/>" + │ ││││ │ │╰─ attrValue.value + │ ││││ │ ╰─ attrValue "=y" + │ ││││ ╰─ attrName "in" + │ │││╰─ attrValue.value + │ ││├─ attrValue "=x" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 107╭─ - │ │││ │ │╰─ openTagEnd:selfClosed "/>" - │ │││ │ ╰─ attrName - │ │││ ╰─ attrName "in" - │ ││╰─ attrValue.value - │ │├─ attrValue "=x" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │ │╰─ openTagEnd:selfClosed "/>" + │ ││││ │ ╰─ attrName + │ ││││ ╰─ attrName "in" + │ │││╰─ attrValue.value + │ ││├─ attrValue "=x" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 108╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x instanceof y" - │ │├─ attrValue "=x instanceof y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x instanceof y" + │ ││├─ attrValue "=x instanceof y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 109╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x ++ + y" - │ │├─ attrValue "=x ++ + y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x ++ + y" + │ ││├─ attrValue "=x ++ + y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 110╭─ - │ │││ │╰─ openTagEnd:selfClosed "/>" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "x + ++ y" - │ │├─ attrValue "=x + ++ y" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │╰─ openTagEnd:selfClosed "/>" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "x + ++ y" + │ ││├─ attrValue "=x + ++ y" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 111╭─ - │ │││ │ │ │╰─ openTagEnd:selfClosed "/>" - │ │││ │ │ ╰─ attrName - │ │││ │ ╰─ attrName - │ │││ ╰─ attrName "++" - │ ││╰─ attrValue.value - │ │├─ attrValue "=x" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │ │ │╰─ openTagEnd:selfClosed "/>" + │ ││││ │ │ ╰─ attrName + │ ││││ │ ╰─ attrName + │ ││││ ╰─ attrName "++" + │ │││╰─ attrValue.value + │ ││├─ attrValue "=x" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 112╭─ y - │ ││││ ││ │╰─ openTagEnd:selfClosed "/>" - │ ││││ ││ ╰─ tagName + │ ││││ ││ ││╰─ openTagEnd:selfClosed "/>" + │ ││││ ││ │╰─ tagName + │ ││││ ││ ╰─ openTagStart │ ││││ │╰─ text " y " │ ││││ ╰─ openTagEnd │ │││╰─ attrValue.value │ ││├─ attrValue "=x" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ error(MISSING_END_TAG:Missing ending "a" tag) "" + │ ├─ error(MISSING_END_TAG:Missing ending "a" tag) "" + ╰─ ╰─ openTagStart 113╭─ > y a/> │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -859,7 +908,8 @@ │ ││├─ attrValue "=x >> y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 114╭─ >> y a/> │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -867,7 +917,8 @@ │ ││├─ attrValue "=x >>> y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 115╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -875,7 +926,8 @@ │ ││├─ attrValue "=x ( y )" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 116╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -883,7 +935,8 @@ │ ││├─ attrValue "=x { y }" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 117╭─ y a/> │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -891,7 +944,8 @@ │ ││├─ attrValue "=x => y" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 118╭─ ( y ) a/> │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -899,7 +953,8 @@ │ ││├─ attrValue "=x => ( y )" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 119╭─ { y } a/> │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -907,7 +962,8 @@ │ ││├─ attrValue "=x => { y }" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 120╭─ │ ││││ │╰─ openTagEnd:selfClosed "/>" │ ││││ ╰─ attrName @@ -915,7 +971,8 @@ │ ││├─ attrValue "=( x ) { y }" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 121╭─ { console.log("y") } a/> │ │││ │ │╰─ openTagEnd:selfClosed "/>" │ │││ │ ╰─ attrName @@ -923,7 +980,8 @@ │ ││├─ attrValue "= (x) => { console.log(\"y\") }" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 122╭─ { console.log("y") } a/> │ │││ │ │╰─ openTagEnd:selfClosed "/>" │ │││ │ ╰─ attrName @@ -931,7 +989,8 @@ │ ││├─ attrValue "= async x => { console.log(\"y\") }" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 123╭─ │ │││ │ │╰─ openTagEnd:selfClosed "/>" │ │││ │ ╰─ attrName @@ -939,7 +998,8 @@ │ ││├─ attrValue "= function (x) { console.log(\"y\") }" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 124╭─ { console.log("y") } a/> │ │││ │ │╰─ openTagEnd:selfClosed "/>" │ │││ │ ╰─ attrName @@ -947,7 +1007,8 @@ │ ││├─ attrValue "= x => { console.log(\"y\") }" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" + │ ├─ text "\n" + ╰─ ╰─ openTagStart 125╭─ │ │││ │ │╰─ openTagEnd:selfClosed "/>" │ │││ │ ╰─ attrName @@ -955,4 +1016,5 @@ │ ││├─ attrValue "= async function (x) { console.log(\"y\") }" │ ││╰─ attrName │ │╰─ tagName - ╰─ ╰─ text "\n" \ No newline at end of file + │ ├─ text "\n" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/attr-simple-expression/__snapshots__/attr-simple-expression.expected.txt b/src/__tests__/fixtures/attr-simple-expression/__snapshots__/attr-simple-expression.expected.txt index a055464f..8890ebdd 100644 --- a/src/__tests__/fixtures/attr-simple-expression/__snapshots__/attr-simple-expression.expected.txt +++ b/src/__tests__/fixtures/attr-simple-expression/__snapshots__/attr-simple-expression.expected.txt @@ -1,9 +1,11 @@ 1╭─ test - │ │ │││ ││ │ ╰─ closeTag(a).value - │ │ │││ ││ ╰─ closeTag(a) "" - │ │ │││ │╰─ text "test" - │ │ │││ ╰─ openTagEnd - │ │ ││╰─ attrValue.value "1/2" - │ │ │╰─ attrValue "=1/2" - │ │ ╰─ attrName - ╰─ ╰─ tagName \ No newline at end of file + │ ││ │││ ││ │ │╰─ closeTagEnd(a) + │ ││ │││ ││ │ ╰─ closeTagName + │ ││ │││ ││ ╰─ closeTagStart " - │ │ │ │╰─ openTagEnd:selfClosed "/>" - │ │ │ ╰─ attrSpread.value - │ │ ╰─ attrSpread "...a" - ╰─ ╰─ tagName "span" + │ ││ │ │╰─ openTagEnd:selfClosed "/>" + │ ││ │ ╰─ attrSpread.value + │ ││ ╰─ attrSpread "...a" + │ │╰─ tagName "span" + ╰─ ╰─ openTagStart 2╭─ - │ │ │ │ │╰─ openTagEnd:selfClosed "/>" - │ │ │ │ ╰─ attrSpread.value - │ │ │ ╰─ attrSpread "...b" - │ │ ╰─ attrName - ╰─ ╰─ tagName "span" + │ ││ │ │ │╰─ openTagEnd:selfClosed "/>" + │ ││ │ │ ╰─ attrSpread.value + │ ││ │ ╰─ attrSpread "...b" + │ ││ ╰─ attrName + │ │╰─ tagName "span" + ╰─ ╰─ openTagStart 3╭─ - │ │ │ │ │ │ │╰─ openTagEnd:selfClosed "/>" - │ │ │ │ │ │ ╰─ attrSpread.value - │ │ │ │ │ ╰─ attrSpread "...c" - │ │ │ │ ╰─ attrSpread.value - │ │ │ ╰─ attrSpread "...b" - │ │ ╰─ attrName - ╰─ ╰─ tagName "span" + │ ││ │ │ │ │ │╰─ openTagEnd:selfClosed "/>" + │ ││ │ │ │ │ ╰─ attrSpread.value + │ ││ │ │ │ ╰─ attrSpread "...c" + │ ││ │ │ ╰─ attrSpread.value + │ ││ │ ╰─ attrSpread "...b" + │ ││ ╰─ attrName + │ │╰─ tagName "span" + ╰─ ╰─ openTagStart 4╭─ - │ │ │ │ │ │ │ │╰─ openTagEnd:selfClosed "/>" - │ │ │ │ │ │ │ ╰─ attrSpread.value - │ │ │ │ │ │ ╰─ attrSpread "...d" - │ │ │ │ │ ╰─ attrName - │ │ │ │ ╰─ attrSpread.value - │ │ │ ╰─ attrSpread "...b" - │ │ ╰─ attrName - ╰─ ╰─ tagName "span" + │ ││ │ │ │ │ │ │╰─ openTagEnd:selfClosed "/>" + │ ││ │ │ │ │ │ ╰─ attrSpread.value + │ ││ │ │ │ │ ╰─ attrSpread "...d" + │ ││ │ │ │ ╰─ attrName + │ ││ │ │ ╰─ attrSpread.value + │ ││ │ ╰─ attrSpread "...b" + │ ││ ╰─ attrName + │ │╰─ tagName "span" + ╰─ ╰─ openTagStart 5╭─ - │ │ │ │ │ │ │ │ │╰─ openTagEnd:selfClosed "/>" - │ │ │ │ │ │ │ │ ╰─ attrName - │ │ │ │ │ │ │ ╰─ attrSpread.value - │ │ │ │ │ │ ╰─ attrSpread "...d" - │ │ │ │ │ ╰─ attrName - │ │ │ │ ╰─ attrSpread.value - │ │ │ ╰─ attrSpread "...b" - │ │ ╰─ attrName - ╰─ ╰─ tagName "span" + │ ││ │ │ │ │ │ │ │╰─ openTagEnd:selfClosed "/>" + │ ││ │ │ │ │ │ │ ╰─ attrName + │ ││ │ │ │ │ │ ╰─ attrSpread.value + │ ││ │ │ │ │ ╰─ attrSpread "...d" + │ ││ │ │ │ ╰─ attrName + │ ││ │ │ ╰─ attrSpread.value + │ ││ │ ╰─ attrSpread "...b" + │ ││ ╰─ attrName + │ │╰─ tagName "span" + ╰─ ╰─ openTagStart 6╰─ \ No newline at end of file diff --git a/src/__tests__/fixtures/attr-unenclosed-whitespace-minus/__snapshots__/attr-unenclosed-whitespace-minus.expected.txt b/src/__tests__/fixtures/attr-unenclosed-whitespace-minus/__snapshots__/attr-unenclosed-whitespace-minus.expected.txt index 3689d45c..55d66f0d 100644 --- a/src/__tests__/fixtures/attr-unenclosed-whitespace-minus/__snapshots__/attr-unenclosed-whitespace-minus.expected.txt +++ b/src/__tests__/fixtures/attr-unenclosed-whitespace-minus/__snapshots__/attr-unenclosed-whitespace-minus.expected.txt @@ -1,5 +1,5 @@ 1╭─ var foo = 5 - data - │ │ │ │ │ ├─ closeTag(var) + │ │ │ │ │ ├─ closeTagEnd(var) │ │ │ │ │ ╰─ openTagEnd │ │ │ │ ╰─ attrValue.value "5 - data" │ │ │ ╰─ attrValue "= 5 - data" diff --git a/src/__tests__/fixtures/attr-unenclosed-whitespace-multiple-attrs/__snapshots__/attr-unenclosed-whitespace-multiple-attrs.expected.txt b/src/__tests__/fixtures/attr-unenclosed-whitespace-multiple-attrs/__snapshots__/attr-unenclosed-whitespace-multiple-attrs.expected.txt index c071adfe..18561ef9 100644 --- a/src/__tests__/fixtures/attr-unenclosed-whitespace-multiple-attrs/__snapshots__/attr-unenclosed-whitespace-multiple-attrs.expected.txt +++ b/src/__tests__/fixtures/attr-unenclosed-whitespace-multiple-attrs/__snapshots__/attr-unenclosed-whitespace-multiple-attrs.expected.txt @@ -1,22 +1,26 @@ 1╭─ - │ │ │ │ │ │ │ │ ││ ╰─ closeTag(test).value "test" - │ │ │ │ │ │ │ │ │╰─ closeTag(test) "" - │ │ │ │ │ │ │ │ ╰─ openTagEnd - │ │ │ │ │ │ │ ╰─ attrValue.value "789" - │ │ │ │ │ │ ╰─ attrValue "= 789" - │ │ │ │ │ ╰─ attrName - │ │ │ │ ╰─ attrValue.value "123 + 456" - │ │ │ ╰─ attrValue "= 123 + 456" - │ │ ╰─ attrName - ╰─ ╰─ tagName "test" + │ ││ │ │ │ │ │ │ ││ │ ╰─ closeTagEnd(test) + │ ││ │ │ │ │ │ │ ││ ╰─ closeTagName "test" + │ ││ │ │ │ │ │ │ │╰─ closeTagStart " - │ │ │ │ │ │ │ │ ││ ╰─ closeTag(test).value "test" - │ │ │ │ │ │ │ │ │╰─ closeTag(test) "" - │ │ │ │ │ │ │ │ ╰─ openTagEnd - │ │ │ │ │ │ │ ╰─ attrValue.value "456 + 789" - │ │ │ │ │ │ ╰─ attrValue "= 456 + 789" - │ │ │ │ │ ╰─ attrName - │ │ │ │ ╰─ attrValue.value "123" - │ │ │ ╰─ attrValue "= 123" - │ │ ╰─ attrName - ╰─ ╰─ tagName "test" \ No newline at end of file + │ ││ │ │ │ │ │ │ ││ │ ╰─ closeTagEnd(test) + │ ││ │ │ │ │ │ │ ││ ╰─ closeTagName "test" + │ ││ │ │ │ │ │ │ │╰─ closeTagStart " - │ │ │ │ │ │ │ │ ││ ╰─ closeTag(div).value "div" - │ │ │ │ │ │ │ │ │╰─ closeTag(div) "" - │ │ │ │ │ │ │ │ ╰─ openTagEnd - │ │ │ │ │ │ │ ╰─ attrValue.value "x /y" - │ │ │ │ │ │ ╰─ attrValue "= x /y" - │ │ │ │ │ ╰─ attrName "bar" - │ │ │ │ ╰─ attrValue.value "1+ 2" - │ │ │ ╰─ attrValue "= 1+ 2" - │ │ ╰─ attrName "foo" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ │ │ │ │ │ ││ │ ╰─ closeTagEnd(div) + │ ││ │ │ │ │ │ │ ││ ╰─ closeTagName "div" + │ ││ │ │ │ │ │ │ │╰─ closeTagStart " - │ │ │ │ │ │ │ │ ││ ╰─ closeTag(div).value "div" - │ │ │ │ │ │ │ │ │╰─ closeTag(div) "" - │ │ │ │ │ │ │ │ ╰─ openTagEnd - │ │ │ │ │ │ │ ╰─ attrValue.value "x / y" - │ │ │ │ │ │ ╰─ attrValue "= x / y" - │ │ │ │ │ ╰─ attrName "bar" - │ │ │ │ ╰─ attrValue.value "1 + 2" - │ │ │ ╰─ attrValue "= 1 + 2" - │ │ ╰─ attrName "foo" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ │ │ │ │ │ ││ │ ╰─ closeTagEnd(div) + │ ││ │ │ │ │ │ │ ││ ╰─ closeTagName "div" + │ ││ │ │ │ │ │ │ │╰─ closeTagStart " - │ │ │ ││ ╰─ openTagEnd:selfClosed "/>" - │ │ │ │╰─ attrValue.value "'bar'" - │ │ │ ╰─ attrValue "='bar'" - │ │ ╰─ attrName "foo" - ╰─ ╰─ tagName "var" \ No newline at end of file + │ ││ │ ││ ╰─ openTagEnd:selfClosed "/>" + │ ││ │ │╰─ attrValue.value "'bar'" + │ ││ │ ╰─ attrValue "='bar'" + │ ││ ╰─ attrName "foo" + │ │╰─ tagName "var" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/attr-value-single-quote-escaped/__snapshots__/attr-value-single-quote-escaped.expected.txt b/src/__tests__/fixtures/attr-value-single-quote-escaped/__snapshots__/attr-value-single-quote-escaped.expected.txt index 8918ee9a..e149934d 100644 --- a/src/__tests__/fixtures/attr-value-single-quote-escaped/__snapshots__/attr-value-single-quote-escaped.expected.txt +++ b/src/__tests__/fixtures/attr-value-single-quote-escaped/__snapshots__/attr-value-single-quote-escaped.expected.txt @@ -1,5 +1,5 @@ 1╭─ var decade = '1960\'s' - │ │ │ │ │ ├─ closeTag(var) + │ │ │ │ │ ├─ closeTagEnd(var) │ │ │ │ │ ╰─ openTagEnd │ │ │ │ ╰─ attrValue.value "'1960\\'s'" │ │ │ ╰─ attrValue "= '1960\\'s'" diff --git a/src/__tests__/fixtures/attr-value-string-concat/__snapshots__/attr-value-string-concat.expected.txt b/src/__tests__/fixtures/attr-value-string-concat/__snapshots__/attr-value-string-concat.expected.txt index 64afd8da..a4ffef75 100644 --- a/src/__tests__/fixtures/attr-value-string-concat/__snapshots__/attr-value-string-concat.expected.txt +++ b/src/__tests__/fixtures/attr-value-string-concat/__snapshots__/attr-value-string-concat.expected.txt @@ -1,8 +1,10 @@ 1╭─
- │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "'a'+bar" - │ │ │ ╰─ attrValue "='a'+bar" - │ │ ╰─ attrName "foo" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart " - │ │ │ ││ ││ ╰─ closeTag(a).value - │ │ │ ││ │╰─ closeTag(a) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "((a-b)/2 + \")\")" - │ │ │ ╰─ attrValue "=((a-b)/2 + \")\")" - │ │ ╰─ attrName "data" - ╰─ ╰─ tagName \ No newline at end of file + │ ││ │ ││ ││ │╰─ closeTagEnd(a) + │ ││ │ ││ ││ ╰─ closeTagName + │ ││ │ ││ │╰─ closeTagStart " - │ │ │ ││ ││ ╰─ closeTag(a).value - │ │ │ ││ │╰─ closeTag(a) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "((a-b)/2 + ')')" - │ │ │ ╰─ attrValue "=((a-b)/2 + ')')" - │ │ ╰─ attrName "data" - ╰─ ╰─ tagName \ No newline at end of file + │ ││ │ ││ ││ │╰─ closeTagEnd(a) + │ ││ │ ││ ││ ╰─ closeTagName + │ ││ │ ││ │╰─ closeTagStart "2)>test - │ │ │││ ││ │ ╰─ closeTag(a).value - │ │ │││ ││ ╰─ closeTag(a) "" - │ │ │││ │╰─ text "test" - │ │ │││ ╰─ openTagEnd - │ │ ││╰─ attrValue.value "(1>2)" - │ │ │╰─ attrValue "=(1>2)" - │ │ ╰─ attrName - ╰─ ╰─ tagName \ No newline at end of file + │ ││ │││ ││ │ │╰─ closeTagEnd(a) + │ ││ │││ ││ │ ╰─ closeTagName + │ ││ │││ ││ ╰─ closeTagStart "2)" + │ ││ │╰─ attrValue "=(1>2)" + │ ││ ╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/attr-with-right-angle-bracket/__snapshots__/attr-with-right-angle-bracket.expected.txt b/src/__tests__/fixtures/attr-with-right-angle-bracket/__snapshots__/attr-with-right-angle-bracket.expected.txt index ced6b319..c4ca9ebc 100644 --- a/src/__tests__/fixtures/attr-with-right-angle-bracket/__snapshots__/attr-with-right-angle-bracket.expected.txt +++ b/src/__tests__/fixtures/attr-with-right-angle-bracket/__snapshots__/attr-with-right-angle-bracket.expected.txt @@ -1,9 +1,11 @@ 1╭─ 2>test - │ │ │││││ │ ╰─ closeTag(a).value - │ │ │││││ ╰─ closeTag(a) "" - │ │ ││││╰─ text "2>test" - │ │ │││╰─ openTagEnd - │ │ ││╰─ attrValue.value - │ │ │╰─ attrValue "=1" - │ │ ╰─ attrName - ╰─ ╰─ tagName \ No newline at end of file + │ ││ │││││ │ │╰─ closeTagEnd(a) + │ ││ │││││ │ ╰─ closeTagName + │ ││ │││││ ╰─ closeTagStart "test" + │ ││ │││╰─ openTagEnd + │ ││ ││╰─ attrValue.value + │ ││ │╰─ attrValue "=1" + │ ││ ╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/attr-without-delimiters/__snapshots__/attr-without-delimiters.expected.txt b/src/__tests__/fixtures/attr-without-delimiters/__snapshots__/attr-without-delimiters.expected.txt index aa72d5aa..d6f561fd 100644 --- a/src/__tests__/fixtures/attr-without-delimiters/__snapshots__/attr-without-delimiters.expected.txt +++ b/src/__tests__/fixtures/attr-without-delimiters/__snapshots__/attr-without-delimiters.expected.txt @@ -1,8 +1,10 @@ 1╭─ - │ │ │ ││ ││ ╰─ closeTag(a).value - │ │ │ ││ │╰─ closeTag(a) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "123\"abc\"" - │ │ │ ╰─ attrValue "=123\"abc\"" - │ │ ╰─ attrName "data" - ╰─ ╰─ tagName \ No newline at end of file + │ ││ │ ││ ││ │╰─ closeTagEnd(a) + │ ││ │ ││ ││ ╰─ closeTagName + │ ││ │ ││ │╰─ closeTagStart " \ No newline at end of file diff --git a/src/__tests__/fixtures/backtick-string-nested-with-space/__snapshots__/backtick-string-nested-with-space.expected.txt b/src/__tests__/fixtures/backtick-string-nested-with-space/__snapshots__/backtick-string-nested-with-space.expected.txt index 3f1b3ad0..49baf405 100644 --- a/src/__tests__/fixtures/backtick-string-nested-with-space/__snapshots__/backtick-string-nested-with-space.expected.txt +++ b/src/__tests__/fixtures/backtick-string-nested-with-space/__snapshots__/backtick-string-nested-with-space.expected.txt @@ -1,8 +1,10 @@ 1╭─ - │ │ │ ││ ││ ╰─ closeTag(hello).value "hello" - │ │ │ ││ │╰─ closeTag(hello) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "`${`hi ${name}`}!`" - │ │ │ ╰─ attrValue "=`${`hi ${name}`}!`" - │ │ ╰─ attrName "message" - ╰─ ╰─ tagName "hello" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(hello) + │ ││ │ ││ ││ ╰─ closeTagName "hello" + │ ││ │ ││ │╰─ closeTagStart " - │ ││ ╰─ closeTag(hello).value "hello" - │ │╰─ closeTag(hello) "" + │ ││ │ ╰─ closeTagEnd(hello) + │ ││ ╰─ closeTagName "hello" + │ │╰─ closeTagStart " - │ ││ ╰─ closeTag(hello).value "hello" - │ │╰─ closeTag(hello) "" + │ ││ │ ╰─ closeTagEnd(hello) + │ ││ ╰─ closeTagName "hello" + │ │╰─ closeTagStart " - │ │ ╰─ openTagEnd - ╰─ ╰─ tagName "div" + │ ││ ╰─ openTagEnd + │ │╰─ tagName "div" + ╰─ ╰─ openTagStart 2╭─ BEFORE]]>AFTER │ │ │ │ ╰─ text "AFTER\n" │ │ │ ╰─ cdata.value "" │ │ ╰─ cdata "]]>" ╰─ ╰─ text "\n BEFORE" 3╭─ - │ │ ╰─ closeTag(div).value "div" - ╰─ ╰─ closeTag(div) "" \ No newline at end of file + │ │ │ ╰─ closeTagEnd(div) + │ │ ╰─ closeTagName "div" + ╰─ ╰─ closeTagStart " - │ │ │ ╰─ openTagEnd - │ │ ╰─ tagName "foo" + │ │ ││ ╰─ openTagEnd + │ │ │╰─ tagName "foo" + │ │ ╰─ openTagStart ╰─ ╰─ openTagEnd 3╭─
│ │ │ ╰─ cdata.value "[if lt IE 9]>
" ╰─ ╰─ text "\n " 4╭─ - │ │ │ │ ╰─ closeTag(test) - │ │ │ ╰─ closeTag(foo).value "foo" - │ │ ╰─ closeTag(foo) "" + │ │ │ │ │╰─ closeTagEnd(test) + │ │ │ │ ╰─ closeTagEnd(foo) + │ │ │ ╰─ closeTagName "foo" + │ │ ╰─ closeTagStart "
- │ │ ││ │ │ ╰─ closeTag(html-comment).value "html-comment" - │ │ ││ │ ╰─ closeTag(html-comment) "" - │ │ ││ ╰─ cdata.value "[if lt IE 9]>
" - │ │ ╰─ openTagEnd - ╰─ ╰─ tagName "html-comment" \ No newline at end of file + │ ││ ││ │ │ ╰─ closeTagEnd(html-comment) + │ ││ ││ │ ╰─ closeTagName "html-comment" + │ ││ ││ ╰─ cdata.value "[if lt IE 9]>
" + │ ││ ╰─ openTagEnd + │ │╰─ tagName "html-comment" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/comma-ends-attr-operators/__snapshots__/comma-ends-attr-operators.expected.txt b/src/__tests__/fixtures/comma-ends-attr-operators/__snapshots__/comma-ends-attr-operators.expected.txt index 4a5ccf00..1e0cdaf2 100644 --- a/src/__tests__/fixtures/comma-ends-attr-operators/__snapshots__/comma-ends-attr-operators.expected.txt +++ b/src/__tests__/fixtures/comma-ends-attr-operators/__snapshots__/comma-ends-attr-operators.expected.txt @@ -1,11 +1,13 @@ 1╭─
- │ │ │ │ │ │ │ │ ││ ╰─ closeTag(div).value "div" - │ │ │ │ │ │ │ │ │╰─ closeTag(div) "
" - │ │ │ │ │ │ │ │ ╰─ openTagEnd - │ │ │ │ │ │ │ ╰─ attrValue.value "true" - │ │ │ │ │ │ ╰─ attrValue "= true" - │ │ │ │ │ ╰─ attrName "+2" - │ │ │ │ ╰─ attrValue.value - │ │ │ ╰─ attrValue "= 1" - │ │ ╰─ attrName "foo" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ │ │ │ │ │ ││ │ ╰─ closeTagEnd(div) + │ ││ │ │ │ │ │ │ ││ ╰─ closeTagName "div" + │ ││ │ │ │ │ │ │ │╰─ closeTagStart " - │ │ │││ │││ │││ ╰─ openTagEnd:selfClosed "/>" - │ │ │││ │││ ││╰─ attrValue.value "\"3\"" - │ │ │││ │││ │╰─ attrValue "=\"3\"" - │ │ │││ │││ ╰─ attrName - │ │ │││ ││╰─ attrValue.value "\"2\"" - │ │ │││ │╰─ attrValue "=\"2\"" - │ │ │││ ╰─ attrName - │ │ ││╰─ attrValue.value "\"1\"" - │ │ │╰─ attrValue "=\"1\"" - │ │ ╰─ attrName - ╰─ ╰─ tagName "foo" \ No newline at end of file + │ ││ │││ │││ │││ ╰─ openTagEnd:selfClosed "/>" + │ ││ │││ │││ ││╰─ attrValue.value "\"3\"" + │ ││ │││ │││ │╰─ attrValue "=\"3\"" + │ ││ │││ │││ ╰─ attrName + │ ││ │││ ││╰─ attrValue.value "\"2\"" + │ ││ │││ │╰─ attrValue "=\"2\"" + │ ││ │││ ╰─ attrName + │ ││ ││╰─ attrValue.value "\"1\"" + │ ││ │╰─ attrValue "=\"1\"" + │ ││ ╰─ attrName + │ │╰─ tagName "foo" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/commas-require-all-attrs-last/__snapshots__/commas-require-all-attrs-last.expected.txt b/src/__tests__/fixtures/commas-require-all-attrs-last/__snapshots__/commas-require-all-attrs-last.expected.txt index cd0f14ef..93f350e8 100644 --- a/src/__tests__/fixtures/commas-require-all-attrs-last/__snapshots__/commas-require-all-attrs-last.expected.txt +++ b/src/__tests__/fixtures/commas-require-all-attrs-last/__snapshots__/commas-require-all-attrs-last.expected.txt @@ -1,12 +1,13 @@ 1╭─ - │ │ │││ │││ │││ ╰─ openTagEnd:selfClosed "/>" - │ │ │││ │││ ││╰─ attrValue.value "\"3\"" - │ │ │││ │││ │╰─ attrValue "=\"3\"" - │ │ │││ │││ ╰─ attrName - │ │ │││ ││╰─ attrValue.value "\"2\"" - │ │ │││ │╰─ attrValue "=\"2\"" - │ │ │││ ╰─ attrName - │ │ ││╰─ attrValue.value "\"1\"" - │ │ │╰─ attrValue "=\"1\"" - │ │ ╰─ attrName - ╰─ ╰─ tagName "foo" \ No newline at end of file + │ ││ │││ │││ │││ ╰─ openTagEnd:selfClosed "/>" + │ ││ │││ │││ ││╰─ attrValue.value "\"3\"" + │ ││ │││ │││ │╰─ attrValue "=\"3\"" + │ ││ │││ │││ ╰─ attrName + │ ││ │││ ││╰─ attrValue.value "\"2\"" + │ ││ │││ │╰─ attrValue "=\"2\"" + │ ││ │││ ╰─ attrName + │ ││ ││╰─ attrValue.value "\"1\"" + │ ││ │╰─ attrValue "=\"1\"" + │ ││ ╰─ attrName + │ │╰─ tagName "foo" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/comment-concise-js-block/__snapshots__/comment-concise-js-block.expected.txt b/src/__tests__/fixtures/comment-concise-js-block/__snapshots__/comment-concise-js-block.expected.txt index 6bc7c9bc..d3892ad6 100644 --- a/src/__tests__/fixtures/comment-concise-js-block/__snapshots__/comment-concise-js-block.expected.txt +++ b/src/__tests__/fixtures/comment-concise-js-block/__snapshots__/comment-concise-js-block.expected.txt @@ -8,5 +8,5 @@ 4├─ multiline comment 5├─ */ 6╭─ -- This is the body of the p tag - │ │ ╰─ closeTag(p) + │ │ ╰─ closeTagEnd(p) ╰─ ╰─ text "This is the body of the p tag" \ No newline at end of file diff --git a/src/__tests__/fixtures/comment-concise-js-line/__snapshots__/comment-concise-js-line.expected.txt b/src/__tests__/fixtures/comment-concise-js-line/__snapshots__/comment-concise-js-line.expected.txt index 7fecacdf..79f86ea3 100644 --- a/src/__tests__/fixtures/comment-concise-js-line/__snapshots__/comment-concise-js-line.expected.txt +++ b/src/__tests__/fixtures/comment-concise-js-line/__snapshots__/comment-concise-js-line.expected.txt @@ -5,5 +5,5 @@ │ │ ╰─ comment "// This is a single line comment" ╰─ ╰─ openTagEnd 3╭─ -- This is the body of the div tag - │ │ ╰─ closeTag(div) + │ │ ╰─ closeTagEnd(div) ╰─ ╰─ text "This is the body of the div tag" \ No newline at end of file diff --git a/src/__tests__/fixtures/comments-within-open-tag/__snapshots__/comments-within-open-tag.expected.txt b/src/__tests__/fixtures/comments-within-open-tag/__snapshots__/comments-within-open-tag.expected.txt index 70b81d40..0287fa5d 100644 --- a/src/__tests__/fixtures/comments-within-open-tag/__snapshots__/comments-within-open-tag.expected.txt +++ b/src/__tests__/fixtures/comments-within-open-tag/__snapshots__/comments-within-open-tag.expected.txt @@ -1,11 +1,13 @@ 1╭─
- │ │ │ ││ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │ ││ │╰─ closeTag(div) "
" - │ │ │ ││ │ ││ ╰─ openTagEnd - │ │ │ ││ │ │╰─ attrValue.value "\"world\"" - │ │ │ ││ │ ╰─ attrValue "=\"world\"" - │ │ │ ││ ╰─ attrName "hello" - │ │ │ │╰─ attrValue.value "\"bar\"" - │ │ │ ╰─ attrValue "=\"bar\"" - │ │ ╰─ attrName "foo" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │ ││ │╰─ closeTagStart " - │ │ │ ││ │ ││ ╰─ openTagEnd:selfClosed "/>" - │ │ │ ││ │ │╰─ attrValue.value "1+1" - │ │ │ ││ │ ╰─ attrValue "=1+1" - │ │ │ ││ ╰─ attrName ".hello" - │ │ │ │╰─ attrArgs.value "'test'" - │ │ │ ╰─ attrArgs "('test')" - │ │ ╰─ attrName "data.someArray[0].doSomething" - ╰─ ╰─ tagName "assign" \ No newline at end of file + │ ││ │ ││ │ ││ ╰─ openTagEnd:selfClosed "/>" + │ ││ │ ││ │ │╰─ attrValue.value "1+1" + │ ││ │ ││ │ ╰─ attrValue "=1+1" + │ ││ │ ││ ╰─ attrName ".hello" + │ ││ │ │╰─ attrArgs.value "'test'" + │ ││ │ ╰─ attrArgs "('test')" + │ ││ ╰─ attrName "data.someArray[0].doSomething" + │ │╰─ tagName "assign" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/complex/__snapshots__/complex.expected.txt b/src/__tests__/fixtures/complex/__snapshots__/complex.expected.txt index 730f8756..08463b71 100644 --- a/src/__tests__/fixtures/complex/__snapshots__/complex.expected.txt +++ b/src/__tests__/fixtures/complex/__snapshots__/complex.expected.txt @@ -10,15 +10,17 @@ ╰─ ╰─ text "\n This is text that spans multiple lines.\n\n " 7├─ 8╭─ You can throw in some HTML markup if you want! - │ │ ││ │ ╰─ closeTag(strong).value "strong" - │ │ ││ ╰─ closeTag(strong) "" - │ │ │╰─ text "You can throw in some HTML markup if you want!" - │ │ ╰─ openTagEnd - ╰─ ╰─ tagName "strong" + │ ││ ││ │ │ ╰─ closeTagEnd(strong) + │ ││ ││ │ ╰─ closeTagName "strong" + │ ││ ││ ╰─ closeTagStart "bold - │ │ │ │ │ │││ │ │ ╰─ closeTag(app-hello) - │ │ │ │ │ │││ │ ╰─ closeTag(b).value - │ │ │ │ │ │││ ╰─ closeTag(b) "" - │ │ │ │ │ ││╰─ text "bold" - │ │ │ │ │ │╰─ openTagEnd - │ │ │ │ │ ╰─ tagName + │ │ │ │ │ ││││ │ ││╰─ closeTagEnd(app-hello) + │ │ │ │ │ ││││ │ │╰─ closeTagEnd(b) + │ │ │ │ │ ││││ │ ╰─ closeTagName + │ │ │ │ │ ││││ ╰─ closeTagStart "bold - │ │ │ │ │││ │ ╰─ closeTag(b).value - │ │ │ │ │││ ╰─ closeTag(b) "" - │ │ │ │ ││╰─ text "bold" - │ │ │ │ │╰─ openTagEnd - │ │ │ │ ╰─ tagName + │ │ │ │ ││││ │ │╰─ closeTagEnd(b) + │ │ │ │ ││││ │ ╰─ closeTagName + │ │ │ │ ││││ ╰─ closeTagStart " - │ │││ │││╰─ openTagEnd:selfClosed "/>" - │ │││ ││╰─ attrValue.value - │ │││ │╰─ attrValue "=2" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "test" - │ │├─ attrValue "=test" - │ │╰─ attrName - ╰─ ╰─ tagName \ No newline at end of file + │ ││││ │││╰─ openTagEnd:selfClosed "/>" + │ ││││ ││╰─ attrValue.value + │ ││││ │╰─ attrValue "=2" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "test" + │ ││├─ attrValue "=test" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/default-attr-no-space/__snapshots__/default-attr-no-space.expected.txt b/src/__tests__/fixtures/default-attr-no-space/__snapshots__/default-attr-no-space.expected.txt index 2ee0840a..86b8600c 100644 --- a/src/__tests__/fixtures/default-attr-no-space/__snapshots__/default-attr-no-space.expected.txt +++ b/src/__tests__/fixtures/default-attr-no-space/__snapshots__/default-attr-no-space.expected.txt @@ -1,19 +1,22 @@ 1╭─ - │ │││ │││╰─ openTagEnd:selfClosed "/>" - │ │││ ││╰─ attrValue.value - │ │││ │╰─ attrValue "=2" - │ │││ ╰─ attrName - │ ││╰─ attrValue.value "test" - │ │├─ attrValue "=test" - │ │╰─ attrName - ╰─ ╰─ tagName + │ ││││ │││╰─ openTagEnd:selfClosed "/>" + │ ││││ ││╰─ attrValue.value + │ ││││ │╰─ attrValue "=2" + │ ││││ ╰─ attrName + │ │││╰─ attrValue.value "test" + │ ││├─ attrValue "=test" + │ ││╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart 2╭─ - │ │ ││ ╰─ openTagEnd - │ │ │╰─ attrValue.value "(a && b)" - │ │ ├─ attrValue "=(a && b)" - │ │ ╰─ attrName - ╰─ ╰─ tagName "if" + │ ││ ││ ╰─ openTagEnd + │ ││ │╰─ attrValue.value "(a && b)" + │ ││ ├─ attrValue "=(a && b)" + │ ││ ╰─ attrName + │ │╰─ tagName "if" + ╰─ ╰─ openTagStart 3╭─ - │ │ ╰─ closeTag(if).value "if" + │ │ │ ╰─ closeTagEnd(if) + │ │ ╰─ closeTagName "if" │ ├─ text "\n" - ╰─ ╰─ closeTag(if) "" \ No newline at end of file + ╰─ ╰─ closeTagStart " - │ │ │ │ │ │ │╰─ openTagEnd:selfClosed "/>" - │ │ │ │ │ │ ╰─ attrValue.value - │ │ │ │ │ ╰─ attrValue "= 2" - │ │ │ │ ╰─ attrName - │ │ │ ╰─ attrValue.value "test" - │ │ ├─ attrValue "= test" - │ │ ╰─ attrName - ╰─ ╰─ tagName \ No newline at end of file + │ ││ │ │ │ │ │╰─ openTagEnd:selfClosed "/>" + │ ││ │ │ │ │ ╰─ attrValue.value + │ ││ │ │ │ ╰─ attrValue "= 2" + │ ││ │ │ ╰─ attrName + │ ││ │ ╰─ attrValue.value "test" + │ ││ ├─ attrValue "= test" + │ ││ ╰─ attrName + │ │╰─ tagName + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/double-hyphen-block/__snapshots__/double-hyphen-block.expected.txt b/src/__tests__/fixtures/double-hyphen-block/__snapshots__/double-hyphen-block.expected.txt index 508df655..d16a7b6b 100644 --- a/src/__tests__/fixtures/double-hyphen-block/__snapshots__/double-hyphen-block.expected.txt +++ b/src/__tests__/fixtures/double-hyphen-block/__snapshots__/double-hyphen-block.expected.txt @@ -16,12 +16,12 @@ ╰─ ╰─ openTagEnd 5╭─ script │ │ ╰─ tagName "script" - ╰─ ╰─ closeTag(h1) + ╰─ ╰─ closeTagEnd(h1) 6╭─ --- ╰─ ╰─ openTagEnd 7╭─ var a = 'marko'; ╰─ ╰─ text "\n var a = 'marko';\n" 8╭─ --- - │ ├─ closeTag(html) - │ ├─ closeTag(body) - ╰─ ╰─ closeTag(script) \ No newline at end of file + │ ├─ closeTagEnd(html) + │ ├─ closeTagEnd(body) + ╰─ ╰─ closeTagEnd(script) \ No newline at end of file diff --git a/src/__tests__/fixtures/double-hyphen-line-start/__snapshots__/double-hyphen-line-start.expected.txt b/src/__tests__/fixtures/double-hyphen-line-start/__snapshots__/double-hyphen-line-start.expected.txt index 6835ccb9..4e9d2edb 100644 --- a/src/__tests__/fixtures/double-hyphen-line-start/__snapshots__/double-hyphen-line-start.expected.txt +++ b/src/__tests__/fixtures/double-hyphen-line-start/__snapshots__/double-hyphen-line-start.expected.txt @@ -16,10 +16,10 @@ ╰─ ╰─ openTagEnd 5╭─ script │ │ ╰─ tagName "script" - ╰─ ╰─ closeTag(h1) + ╰─ ╰─ closeTagEnd(h1) 6╭─ -- var a = 'marko'; - │ │ │ ├─ closeTag(html) - │ │ │ ├─ closeTag(body) - │ │ │ ╰─ closeTag(script) + │ │ │ ├─ closeTagEnd(html) + │ │ │ ├─ closeTagEnd(body) + │ │ │ ╰─ closeTagEnd(script) │ │ ╰─ text "var a = 'marko';" ╰─ ╰─ openTagEnd \ No newline at end of file diff --git a/src/__tests__/fixtures/double-hyphen-line/__snapshots__/double-hyphen-line.expected.txt b/src/__tests__/fixtures/double-hyphen-line/__snapshots__/double-hyphen-line.expected.txt index ebb176a4..ed52105e 100644 --- a/src/__tests__/fixtures/double-hyphen-line/__snapshots__/double-hyphen-line.expected.txt +++ b/src/__tests__/fixtures/double-hyphen-line/__snapshots__/double-hyphen-line.expected.txt @@ -15,10 +15,10 @@ │ │ ╰─ tagName "h1" ╰─ ╰─ openTagEnd 5╭─ script -- var a = 'marko'; - │ │ │ │ │ ├─ closeTag(html) - │ │ │ │ │ ├─ closeTag(body) - │ │ │ │ │ ╰─ closeTag(script) + │ │ │ │ │ ├─ closeTagEnd(html) + │ │ │ │ │ ├─ closeTagEnd(body) + │ │ │ │ │ ╰─ closeTagEnd(script) │ │ │ │ ╰─ text "var a = 'marko';" │ │ │ ╰─ openTagEnd │ │ ╰─ tagName "script" - ╰─ ╰─ closeTag(h1) \ No newline at end of file + ╰─ ╰─ closeTagEnd(h1) \ No newline at end of file diff --git a/src/__tests__/fixtures/empty-closing-tag/__snapshots__/empty-closing-tag.expected.txt b/src/__tests__/fixtures/empty-closing-tag/__snapshots__/empty-closing-tag.expected.txt index a87e2878..3179d655 100644 --- a/src/__tests__/fixtures/empty-closing-tag/__snapshots__/empty-closing-tag.expected.txt +++ b/src/__tests__/fixtures/empty-closing-tag/__snapshots__/empty-closing-tag.expected.txt @@ -1,18 +1,22 @@ 1╭─
- │ │ ╰─ openTagEnd - ╰─ ╰─ tagName "div" + │ ││ ╰─ openTagEnd + │ │╰─ tagName "div" + ╰─ ╰─ openTagStart 2╭─ Hello World ╰─ ╰─ text "\n Hello World\n " 3╭─ - │ │ ╰─ openTagEnd - ╰─ ╰─ tagName "span" + │ ││ ╰─ openTagEnd + │ │╰─ tagName "span" + ╰─ ╰─ openTagStart 4╭─ Hello Universe ╰─ ╰─ text "\n Hello Universe\n " 5╭─ - │ │ ╰─ closeTag(span).value - ╰─ ╰─ closeTag(span) "" + │ │ ├─ closeTagEnd(span) + │ │ ╰─ closeTagName + ╰─ ╰─ closeTagStart " - │ │ ╰─ closeTag(div).value + │ │ ├─ closeTagEnd(div) + │ │ ╰─ closeTagName │ ├─ text "\n" - ╰─ ╰─ closeTag(div) "" + ╰─ ╰─ closeTagStart " - │ │ ││ ╰─ openTagEnd - │ │ │╰─ tagShorthandClass.quasis[0] "features" - │ │ ╰─ tagShorthandClass ".features" - ╰─ ╰─ tagName "ul" + │ ││ ││ ╰─ openTagEnd + │ ││ │╰─ tagShorthandClass.quasis[0] "features" + │ ││ ╰─ tagShorthandClass ".features" + │ │╰─ tagName "ul" + ╰─ ╰─ openTagStart 2╭─
  • - │ │ │ │ ││ ╰─ openTagEnd - │ │ │ │ │╰─ attrArgs.value "feature in []" - │ │ │ │ ╰─ attrArgs "(feature in [])" - │ │ │ ╰─ attrName "for" - │ │ ╰─ tagName "li" + │ │ ││ │ ││ ╰─ openTagEnd + │ │ ││ │ │╰─ attrArgs.value "feature in []" + │ │ ││ │ ╰─ attrArgs "(feature in [])" + │ │ ││ ╰─ attrName "for" + │ │ │╰─ tagName "li" + │ │ ╰─ openTagStart ╰─ ╰─ text "\n " 3╭─ ${feature} │ │ │ ╰─ placeholder:escape.value "feature" │ │ ╰─ placeholder:escape "${feature}" ╰─ ╰─ text "\n " 4╭─
  • - │ │ │ ╰─ closeTag(li).value "li" - │ │ ╰─ closeTag(li) "" + │ │ │ │ ╰─ closeTagEnd(li) + │ │ │ ╰─ closeTagName "li" + │ │ ╰─ closeTagStart " - │ │ ╰─ closeTag(ul).value + │ │ ├─ closeTagEnd(ul) + │ │ ╰─ closeTagName │ ├─ text "\n" - ╰─ ╰─ closeTag(ul) "" \ No newline at end of file + ╰─ ╰─ closeTagStart "Hello ${abc
    - │ │ ││ ╰─ error(MALFORMED_PLACEHOLDER:EOF reached while parsing placeholder) - │ │ │╰─ text "Hello " - │ │ ╰─ openTagEnd - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ ││ ╰─ error(MALFORMED_PLACEHOLDER:EOF reached while parsing placeholder) + │ ││ │╰─ text "Hello " + │ ││ ╰─ openTagEnd + │ │╰─ tagName "div" + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/eof-placeholder-body-non-escaped/__snapshots__/eof-placeholder-body-non-escaped.expected.txt b/src/__tests__/fixtures/eof-placeholder-body-non-escaped/__snapshots__/eof-placeholder-body-non-escaped.expected.txt index c65e92b7..035db37a 100644 --- a/src/__tests__/fixtures/eof-placeholder-body-non-escaped/__snapshots__/eof-placeholder-body-non-escaped.expected.txt +++ b/src/__tests__/fixtures/eof-placeholder-body-non-escaped/__snapshots__/eof-placeholder-body-non-escaped.expected.txt @@ -1,6 +1,7 @@ 1╭─
    - │ │ ╰─ openTagEnd - ╰─ ╰─ tagName "div" + │ ││ ╰─ openTagEnd + │ │╰─ tagName "div" + ╰─ ╰─ openTagStart 2╭─ Hello ╰─ ╰─ text "\n Hello\n " 3╭─ $!{abc diff --git a/src/__tests__/fixtures/eof-placeholder-script-body-escaped/__snapshots__/eof-placeholder-script-body-escaped.expected.txt b/src/__tests__/fixtures/eof-placeholder-script-body-escaped/__snapshots__/eof-placeholder-script-body-escaped.expected.txt index 5f0ccbf6..72c2dd76 100644 --- a/src/__tests__/fixtures/eof-placeholder-script-body-escaped/__snapshots__/eof-placeholder-script-body-escaped.expected.txt +++ b/src/__tests__/fixtures/eof-placeholder-script-body-escaped/__snapshots__/eof-placeholder-script-body-escaped.expected.txt @@ -1,5 +1,6 @@ 1╭─ " ╰─ ╰─ text "\n " 5╭─ [if lt IE 9]> - │ │ │ ││ │ ╰─ closeTag(html-comment).value "html-comment" - │ │ │ ││ ╰─ closeTag(html-comment) "" - │ │ │ │╰─ text "[if lt IE 9]> - │ │ ╰─ closeTag(div).value "div" + │ │ │ ╰─ closeTagEnd(div) + │ │ ╰─ closeTagName "div" │ ├─ text "\n" - ╰─ ╰─ closeTag(div) "
    " + ╰─ ╰─ closeTagStart " - │ │││ │ │ ╰─ closeTag(a).value - │ │││ │ ╰─ closeTag(a) "" - │ │││ ╰─ comment.value "" - │ ││╰─ comment "" - │ │╰─ openTagEnd - ╰─ ╰─ tagName \ No newline at end of file + │ ││││ │ │ │╰─ closeTagEnd(a) + │ ││││ │ │ ╰─ closeTagName + │ ││││ │ ╰─ closeTagStart "
    " + │ │││╰─ comment "" + │ ││╰─ openTagEnd + │ │╰─ tagName + ╰─ ╰─ openTagStart \ No newline at end of file diff --git a/src/__tests__/fixtures/ignoreNonstandardStringPlaceholders/__snapshots__/ignoreNonstandardStringPlaceholders.expected.txt b/src/__tests__/fixtures/ignoreNonstandardStringPlaceholders/__snapshots__/ignoreNonstandardStringPlaceholders.expected.txt index c53a90e5..e7a4e9e8 100644 --- a/src/__tests__/fixtures/ignoreNonstandardStringPlaceholders/__snapshots__/ignoreNonstandardStringPlaceholders.expected.txt +++ b/src/__tests__/fixtures/ignoreNonstandardStringPlaceholders/__snapshots__/ignoreNonstandardStringPlaceholders.expected.txt @@ -1,8 +1,10 @@ 1╭─
    - │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "
    " - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "\"Hello ${foo}\"" - │ │ │ ╰─ attrValue "=\"Hello ${foo}\"" - │ │ ╰─ attrName "data-foo" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart "
    - │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "
    " - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "\"\\\\${foo}\"" - │ │ │ ╰─ attrValue "=\"\\\\${foo}\"" - │ │ ╰─ attrName "data-foo" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart "
    - │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "
    " - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "\"\\${foo}\"" - │ │ │ ╰─ attrValue "=\"\\${foo}\"" - │ │ ╰─ attrName "data-foo" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart "
    - │ │ │ ││ ││ ╰─ closeTag(div).value "div" - │ │ │ ││ │╰─ closeTag(div) "" - │ │ │ ││ ╰─ openTagEnd - │ │ │ │╰─ attrValue.value "\"${foo}\"" - │ │ │ ╰─ attrValue "=\"${foo}\"" - │ │ ╰─ attrName "data-foo" - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ │ ││ ││ │ ╰─ closeTagEnd(div) + │ ││ │ ││ ││ ╰─ closeTagName "div" + │ ││ │ ││ │╰─ closeTagStart "
    - │ │ ││╰─ error(MISMATCHED_CLOSING_TAG:The closing "span" tag does not match the corresponding opening "div" tag) "
    " - │ │ │╰─ text " " - │ │ ╰─ openTagEnd - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ ││├─ error(MISMATCHED_CLOSING_TAG:The closing "span" tag does not match the corresponding opening "div" tag) "
    " + │ ││ ││╰─ closeTagStart "Hello - │ │ │││ │ ╰─ closeTag(b).value - │ │ │││ ╰─ closeTag(b) "" - │ │ ││╰─ text "Hello" - │ │ │╰─ openTagEnd - │ │ ╰─ tagName + │ │ ││││ │ │╰─ closeTagEnd(b) + │ │ ││││ │ ╰─ closeTagName + │ │ ││││ ╰─ closeTagStart "" ╰─ ╰─ openTagEnd 3╭─ div class="bar" -- - │ │ │ ││ │ │ │ ╰─ closeTag(div) + │ │ │ ││ │ │ │ ╰─ closeTagEnd(div) │ │ │ ││ │ │ ╰─ cdata.value "Hello World" │ │ │ ││ │ ╰─ cdata "" │ │ │ ││ ╰─ openTagEnd │ │ │ │╰─ attrValue.value "\"bar\"" │ │ │ ╰─ attrValue "=\"bar\"" │ │ ╰─ attrName "class" - │ ├─ closeTag(p) + │ ├─ closeTagEnd(p) ╰─ ╰─ tagName "div" \ No newline at end of file diff --git a/src/__tests__/fixtures/mixed-comment/__snapshots__/mixed-comment.expected.txt b/src/__tests__/fixtures/mixed-comment/__snapshots__/mixed-comment.expected.txt index b27195df..14301d8b 100644 --- a/src/__tests__/fixtures/mixed-comment/__snapshots__/mixed-comment.expected.txt +++ b/src/__tests__/fixtures/mixed-comment/__snapshots__/mixed-comment.expected.txt @@ -11,12 +11,12 @@ 4├─ should be okay 5├─ --> 6╭─ div class="bar" -- - │ │ │ ││ │ │ │ ╰─ closeTag(div) + │ │ │ ││ │ │ │ ╰─ closeTagEnd(div) │ │ │ ││ │ │ ╰─ comment.value " test " │ │ │ ││ │ ╰─ comment "" │ │ │ ││ ╰─ openTagEnd │ │ │ │╰─ attrValue.value "\"bar\"" │ │ │ ╰─ attrValue "=\"bar\"" │ │ ╰─ attrName "class" - │ ├─ closeTag(p) + │ ├─ closeTagEnd(p) ╰─ ╰─ tagName "div" \ No newline at end of file diff --git a/src/__tests__/fixtures/mixed-invalid/__snapshots__/mixed-invalid.expected.txt b/src/__tests__/fixtures/mixed-invalid/__snapshots__/mixed-invalid.expected.txt index 50172b6b..6407d78b 100644 --- a/src/__tests__/fixtures/mixed-invalid/__snapshots__/mixed-invalid.expected.txt +++ b/src/__tests__/fixtures/mixed-invalid/__snapshots__/mixed-invalid.expected.txt @@ -6,14 +6,16 @@ 2╭─
    │ ││ ╰─ openTagEnd │ │╰─ tagName "div" - │ ├─ closeTag(var) - ╰─ ╰─ openTagEnd + │ ├─ closeTagEnd(var) + │ ├─ openTagEnd + ╰─ ╰─ openTagStart 3╭─ - │ │ │ │ ││ ╰─ openTagEnd - │ │ │ │ │╰─ attrValue.value "\"foo\"" - │ │ │ │ ╰─ attrValue "=\"foo\"" - │ │ │ ╰─ attrName "class" - │ │ ╰─ tagName "span" + │ │ ││ │ ││ ╰─ openTagEnd + │ │ ││ │ │╰─ attrValue.value "\"foo\"" + │ │ ││ │ ╰─ attrValue "=\"foo\"" + │ │ ││ ╰─ attrName "class" + │ │ │╰─ tagName "span" + │ │ ╰─ openTagStart ╰─ ╰─ text "\n " 4╭─ Hello ${data.name}! │ │ │ │ ╰─ text "!\n " @@ -21,29 +23,35 @@ │ │ ╰─ placeholder:escape "${data.name}" ╰─ ╰─ text "\n Hello " 5╭─ - │ │ ╰─ closeTag(span).value "span" - ╰─ ╰─ closeTag(span) "" + │ │ │ ╰─ closeTagEnd(span) + │ │ ╰─ closeTagName "span" + ╰─ ╰─ closeTagStart " This is not - │ │ │ │ ││╰─ text "This is not\n allowed" - │ │ │ │ │╰─ openTagEnd - │ │ │ │ ╰─ tagName - │ │ │ ╰─ text " " - │ │ ╰─ closeTag(div).value "div" + │ │ │ │││││╰─ text "This is not\n allowed" + │ │ │ ││││╰─ openTagEnd + │ │ │ │││╰─ tagName + │ │ │ ││╰─ openTagStart + │ │ │ │╰─ text " " + │ │ │ ╰─ closeTagEnd(div) + │ │ ╰─ closeTagName "div" │ ├─ text "\n" - ╰─ ╰─ closeTag(div) "
    " + ╰─ ╰─ closeTagStart " - │ │ ╰─ closeTag(b).value - ╰─ ╰─ closeTag(b) "" + │ │ │╰─ closeTagEnd(b) + │ │ ╰─ closeTagName + ╰─ ╰─ closeTagStart "Test
    - │ │ │ ││ │ │ ╰─ closeTag(p) - │ │ │ ││ │ ╰─ closeTag(span).value "span" - │ │ │ ││ ╰─ closeTag(span) "" - │ │ │ │╰─ text "Test" - │ │ │ ╰─ openTagEnd - │ │ ╰─ tagName "span" + │ │ ││ ││ │ │ │╰─ closeTagEnd(p) + │ │ ││ ││ │ │ ╰─ closeTagEnd(span) + │ │ ││ ││ │ ╰─ closeTagName "span" + │ │ ││ ││ ╰─ closeTagStart " │ ││ ╰─ openTagEnd │ │╰─ tagName "div" - │ ├─ closeTag(var) - ╰─ ╰─ openTagEnd + │ ├─ closeTagEnd(var) + │ ├─ openTagEnd + ╰─ ╰─ openTagStart 3╭─ - │ │ │ │ ││ ╰─ openTagEnd - │ │ │ │ │╰─ attrValue.value "\"foo\"" - │ │ │ │ ╰─ attrValue "=\"foo\"" - │ │ │ ╰─ attrName "class" - │ │ ╰─ tagName "span" + │ │ ││ │ ││ ╰─ openTagEnd + │ │ ││ │ │╰─ attrValue.value "\"foo\"" + │ │ ││ │ ╰─ attrValue "=\"foo\"" + │ │ ││ ╰─ attrName "class" + │ │ │╰─ tagName "span" + │ │ ╰─ openTagStart ╰─ ╰─ text "\n " 4╭─ Hello ${data.name}! │ │ │ │ ╰─ text "!\n " @@ -21,28 +23,34 @@ │ │ ╰─ placeholder:escape "${data.name}" ╰─ ╰─ text "\n Hello " 5╭─ - │ │ ╰─ closeTag(span).value "span" - ╰─ ╰─ closeTag(span) "" + │ │ │ ╰─ closeTagEnd(span) + │ │ ╰─ closeTagName "span" + ╰─ ╰─ closeTagStart " This is after the span - │ │ │ │ │││ │ ╰─ closeTag(b).value - │ │ │ │ │││ ╰─ closeTag(b) "" - │ │ │ │ ││╰─ text "This is after the span" - │ │ │ │ │╰─ openTagEnd - │ │ │ │ ╰─ tagName - │ │ │ ╰─ text " " - │ │ ╰─ closeTag(div).value "div" + │ │ │ ││││││ │ │╰─ closeTagEnd(b) + │ │ │ ││││││ │ ╰─ closeTagName + │ │ │ ││││││ ╰─ closeTagStart "" + ╰─ ╰─ closeTagStart "Test - │ │ │ ││ │ │ ╰─ closeTag(p) - │ │ │ ││ │ ╰─ closeTag(span).value "span" - │ │ │ ││ ╰─ closeTag(span) "" - │ │ │ │╰─ text "Test" - │ │ │ ╰─ openTagEnd - │ │ ╰─ tagName "span" + │ │ ││ ││ │ │ │╰─ closeTagEnd(p) + │ │ ││ ││ │ │ ╰─ closeTagEnd(span) + │ │ ││ ││ │ ╰─ closeTagName "span" + │ │ ││ ││ ╰─ closeTagStart "Frank - │ │ │ ││ │ ╰─ closeTag(strong).value "strong" - │ │ │ ││ ╰─ closeTag(strong) "" - │ │ │ │╰─ text "Frank" - │ │ │ ╰─ openTagEnd - │ │ ╰─ tagName "strong" + │ │ ││ ││ │ │ ╰─ closeTagEnd(strong) + │ │ ││ ││ │ ╰─ closeTagName "strong" + │ │ ││ ││ ╰─ closeTagStart "Frank - │ │ │ ││ │ ╰─ closeTag(strong).value "strong" - │ │ │ ││ ╰─ closeTag(strong) "" - │ │ │ │╰─ text "Frank" - │ │ │ ╰─ openTagEnd - │ │ ╰─ tagName "strong" + │ │ ││ ││ │ │ ╰─ closeTagEnd(strong) + │ │ ││ ││ │ ╰─ closeTagName "strong" + │ │ ││ ││ ╰─ closeTagStart "
    - │ │ ││ │ │ ╰─ openTagEnd - │ │ ││ │ ╰─ tagName "div" - │ │ ││ ╰─ closeTag(span).value "span" - │ │ │╰─ closeTag(span) "" - │ │ ╰─ openTagEnd - ╰─ ╰─ tagName "span" + │ ││ ││ │ │││ ╰─ openTagEnd + │ ││ ││ │ ││╰─ tagName "div" + │ ││ ││ │ │╰─ openTagStart + │ ││ ││ │ ╰─ closeTagEnd(span) + │ ││ ││ ╰─ closeTagName "span" + │ ││ │╰─ closeTagStart " - │ │ ╰─ closeTag(div).value "div" + │ │ │ ╰─ closeTagEnd(div) + │ │ ╰─ closeTagName "div" │ ├─ text "\n" - ╰─ ╰─ closeTag(div) "
    " + ╰─ ╰─ closeTagStart " - ╰─ ╰─ error(EXTRA_CLOSING_TAG:The closing "img" tag was not expected) "" + │ ├─ error(EXTRA_CLOSING_TAG:The closing "img" tag was not expected) "" + ╰─ ╰─ closeTagStart " A B C D - │ │ ││ │ │ ││ ││ │ │ ││ ││ │ │ ││ ││ │ ╰─ closeTag(div).value "div" - │ │ ││ │ │ ││ ││ │ │ ││ ││ │ │ ││ ││ ╰─ closeTag(div) "" - │ │ ││ │ │ ││ ││ │ │ ││ ││ │ │ ││ │╰─ text " D " - │ │ ││ │ │ ││ ││ │ │ ││ ││ │ │ ││ ╰─ openTagEnd - │ │ ││ │ │ ││ ││ │ │ ││ ││ │ │ │╰─ attrValue.value "\"image3.png\"" - │ │ ││ │ │ ││ ││ │ │ ││ ││ │ │ ╰─ attrValue "=\"image3.png\"" - │ │ ││ │ │ ││ ││ │ │ ││ ││ │ ╰─ attrName "src" - │ │ ││ │ │ ││ ││ │ │ ││ ││ ╰─ tagName "img" - │ │ ││ │ │ ││ ││ │ │ ││ │╰─ text " C " - │ │ ││ │ │ ││ ││ │ │ ││ ╰─ openTagEnd - │ │ ││ │ │ ││ ││ │ │ │╰─ attrValue.value "\"image2.png\"" - │ │ ││ │ │ ││ ││ │ │ ╰─ attrValue "=\"image2.png\"" - │ │ ││ │ │ ││ ││ │ ╰─ attrName "src" - │ │ ││ │ │ ││ ││ ╰─ tagName "img" - │ │ ││ │ │ ││ │╰─ text " B " - │ │ ││ │ │ ││ ╰─ openTagEnd - │ │ ││ │ │ │╰─ attrValue.value "\"image1.png\"" - │ │ ││ │ │ ╰─ attrValue "=\"image1.png\"" - │ │ ││ │ ╰─ attrName "src" - │ │ ││ ╰─ tagName "img" - │ │ │╰─ text " A " - │ │ ╰─ openTagEnd - ╰─ ╰─ tagName "div" \ No newline at end of file + │ ││ ││ ││ │ ││ ││ ││ │ ││ ││ ││ │ ││ ││ │ │ ╰─ closeTagEnd(div) + │ ││ ││ ││ │ ││ ││ ││ │ ││ ││ ││ │ ││ ││ │ ╰─ closeTagName "div" + │ ││ ││ ││ │ ││ ││ ││ │ ││ ││ ││ │ ││ ││ ╰─ closeTagStart " - │ │ ││ │ ││ ││ ╰─ closeTag(for).value "for" - │ │ ││ │ ││ │╰─ closeTag(for) "" - │ │ ││ │ ││ ╰─ openTagEnd - │ │ ││ │ │╰─ attrValue.value "array" - │ │ ││ │ ╰─ attrValue "=array" - │ │ ││ ╰─ attrName "of" - │ │ │╰─ tagParams.value "x, y, { destrucure=default }" - │ │ ╰─ tagParams "|x, y, { destrucure=default }|" - ╰─ ╰─ tagName "for" \ No newline at end of file + │ ││ ││ │ ││ ││ │ ╰─ closeTagEnd(for) + │ ││ ││ │ ││ ││ ╰─ closeTagName "for" + │ ││ ││ │ ││ │╰─ closeTagStart " - │ │ ╰─ openTagEnd - ╰─ ╰─ tagName "script" + │ ││ ╰─ openTagEnd + │ │╰─ tagName "script" + ╰─ ╰─ openTagStart 2╭─ var foo = `Text 1: ${content}`; ╰─ ╰─ text "\n var foo = `Text 1: ${content}`;\n // ${foo}\n /*\n ${bar}\n */\n" 3├─ // ${foo} @@ -8,6 +9,6 @@ 5├─ ${bar} 6├─ */ 7╭─ - │ │ ╰─ closeTag(script).value "script" - ╰─ ╰─ closeTag(script) "" + │ │ ╰─ closeTagEnd(script) + ╰─ ╰─ closeTagName "script" 8╰─ \ No newline at end of file diff --git a/src/__tests__/fixtures/parsed-text-style-tag/__snapshots__/parsed-text-style-tag.expected.txt b/src/__tests__/fixtures/parsed-text-style-tag/__snapshots__/parsed-text-style-tag.expected.txt index 4dfab783..c66d2d41 100644 --- a/src/__tests__/fixtures/parsed-text-style-tag/__snapshots__/parsed-text-style-tag.expected.txt +++ b/src/__tests__/fixtures/parsed-text-style-tag/__snapshots__/parsed-text-style-tag.expected.txt @@ -1,6 +1,7 @@ 1╭─ - │ │ ││ │ ╰─ closeTag(style).value "style" - │ │ ││ ╰─ closeTag(style) "" - │ │ │╰─ text "/* block comment within