diff --git a/lib/rules/block-tag-newline.js b/lib/rules/block-tag-newline.js index 1fe427afd..8459f5760 100644 --- a/lib/rules/block-tag-newline.js +++ b/lib/rules/block-tag-newline.js @@ -347,13 +347,6 @@ module.exports = { const verify = normalizeOptionValue(context.options[0]) - /** - * @returns {VElement[]} - */ - function getTopLevelHTMLElements() { - return documentFragment.children.filter(utils.isVElement) - } - return utils.defineTemplateBodyVisitor( context, {}, @@ -364,8 +357,10 @@ module.exports = { return } - for (const element of getTopLevelHTMLElements()) { - verify(element) + for (const element of documentFragment.children) { + if (utils.isVElement(element)) { + verify(element) + } } } } diff --git a/lib/rules/html-closing-bracket-newline.js b/lib/rules/html-closing-bracket-newline.js index 6963de8f1..9ac1d0f52 100644 --- a/lib/rules/html-closing-bracket-newline.js +++ b/lib/rules/html-closing-bracket-newline.js @@ -68,7 +68,7 @@ module.exports = { context.parserServices.getTemplateBodyTokenStore && context.parserServices.getTemplateBodyTokenStore() - return utils.defineTemplateBodyVisitor(context, { + return utils.defineDocumentVisitor(context, { /** @param {VStartTag | VEndTag} node */ 'VStartTag, VEndTag'(node) { const closingBracketToken = template.getLastToken(node) diff --git a/lib/rules/html-closing-bracket-spacing.js b/lib/rules/html-closing-bracket-spacing.js index 95de6d01f..e60fba491 100644 --- a/lib/rules/html-closing-bracket-spacing.js +++ b/lib/rules/html-closing-bracket-spacing.js @@ -92,7 +92,7 @@ module.exports = { context.parserServices.getTemplateBodyTokenStore() const options = parseOptions(context.options[0], tokens) - return utils.defineTemplateBodyVisitor(context, { + return utils.defineDocumentVisitor(context, { /** @param {VStartTag | VEndTag} node */ 'VStartTag, VEndTag'(node) { const type = options.detectType(node) diff --git a/tests/lib/rules/html-closing-bracket-newline.js b/tests/lib/rules/html-closing-bracket-newline.js index 4c07c80db..b72c46b97 100644 --- a/tests/lib/rules/html-closing-bracket-newline.js +++ b/tests/lib/rules/html-closing-bracket-newline.js @@ -337,6 +337,156 @@ tester.run('html-closing-bracket-newline', rule, { 'Expected 1 line break before closing bracket, but no line breaks found.', 'Expected 1 line break before closing bracket, but no line breaks found.' ] + }, + { + code: ` + + + + `, + output: ` + + + + `, + options: [ + { + singleline: 'never', + multiline: 'never' + } + ], + errors: [ + { + message: + 'Expected no line breaks before closing bracket, but 1 line break found.', + line: 2, + column: 18, + endLine: 3, + endColumn: 9 + }, + { + message: + 'Expected no line breaks before closing bracket, but 1 line break found.', + line: 4, + column: 19, + endLine: 5, + endColumn: 9 + }, + { + message: + 'Expected no line breaks before closing bracket, but 1 line break found.', + line: 6, + column: 16, + endLine: 7, + endColumn: 9 + }, + { + message: + 'Expected no line breaks before closing bracket, but 1 line break found.', + line: 8, + column: 17, + endLine: 9, + endColumn: 9 + }, + { + message: + 'Expected no line breaks before closing bracket, but 1 line break found.', + line: 10, + column: 15, + endLine: 11, + endColumn: 9 + }, + { + message: + 'Expected no line breaks before closing bracket, but 1 line break found.', + line: 11, + column: 17, + endLine: 12, + endColumn: 9 + } + ] + }, + { + code: ` + + + + `, + output: ` + + + + `, + options: [ + { + singleline: 'always', + multiline: 'always' + } + ], + errors: [ + { + message: + 'Expected 1 line break before closing bracket, but no line breaks found.', + line: 2, + column: 18, + endColumn: 18 + }, + { + message: + 'Expected 1 line break before closing bracket, but no line breaks found.', + line: 3, + column: 19, + endColumn: 19 + }, + { + message: + 'Expected 1 line break before closing bracket, but no line breaks found.', + line: 4, + column: 16, + endColumn: 16 + }, + { + message: + 'Expected 1 line break before closing bracket, but no line breaks found.', + line: 5, + column: 17, + endColumn: 17 + }, + { + message: + 'Expected 1 line break before closing bracket, but no line breaks found.', + line: 6, + column: 15, + endColumn: 15 + }, + { + message: + 'Expected 1 line break before closing bracket, but no line breaks found.', + line: 6, + column: 23, + endColumn: 23 + } + ] } ] }) diff --git a/tests/lib/rules/html-closing-bracket-spacing.js b/tests/lib/rules/html-closing-bracket-spacing.js index 154ba87b2..af03d0bfd 100644 --- a/tests/lib/rules/html-closing-bracket-spacing.js +++ b/tests/lib/rules/html-closing-bracket-spacing.js @@ -114,6 +114,56 @@ ruleTester.run('html-closing-bracket-spacing', rule, { } ] }, + { + code: ` + + + + `, + output: ` + + + + `, + errors: [ + { + message: "Expected no space before '>', but found.", + line: 2, + column: 18, + endColumn: 20 + }, + { + message: "Expected no space before '>', but found.", + line: 2, + column: 30, + endColumn: 32 + }, + { + message: "Expected no space before '>', but found.", + line: 3, + column: 16, + endColumn: 18 + }, + { + message: "Expected no space before '>', but found.", + line: 3, + column: 26, + endColumn: 28 + }, + { + message: "Expected no space before '>', but found.", + line: 4, + column: 15, + endColumn: 17 + }, + { + message: "Expected no space before '>', but found.", + line: 4, + column: 24, + endColumn: 26 + } + ] + }, { code: '', output: '', @@ -144,6 +194,63 @@ ruleTester.run('html-closing-bracket-spacing', rule, { endColumn: 10 } ] + }, + { + code: ` + + + + `, + output: ` + + + + `, + options: [ + { + startTag: 'always', + endTag: 'always', + selfClosingTag: 'never' + } + ], + errors: [ + { + message: "Expected a space before '>', but not found.", + line: 2, + column: 18, + endColumn: 19 + }, + { + message: "Expected a space before '>', but not found.", + line: 2, + column: 29, + endColumn: 30 + }, + { + message: "Expected a space before '>', but not found.", + line: 3, + column: 16, + endColumn: 17 + }, + { + message: "Expected a space before '>', but not found.", + line: 3, + column: 25, + endColumn: 26 + }, + { + message: "Expected a space before '>', but not found.", + line: 4, + column: 15, + endColumn: 16 + }, + { + message: "Expected a space before '>', but not found.", + line: 4, + column: 23, + endColumn: 24 + } + ] } ] })