diff --git a/src/language-html/embed.js b/src/language-html/embed.js index 2ca96c4d6..ef83e6364 100644 --- a/src/language-html/embed.js +++ b/src/language-html/embed.js @@ -28,7 +28,7 @@ const { isVueSlotAttribute, isVueSfcBindingsAttribute, getTextValueParts, -} = require("./utils.js"); +} = require("./utils/index.js"); const getNodeContent = require("./get-node-content.js"); function printEmbeddedAttributeValue(node, htmlTextToDoc, options) { diff --git a/src/language-html/parser-html.js b/src/language-html/parser-html.js index dd5c1e968..b438eaa35 100644 --- a/src/language-html/parser-html.js +++ b/src/language-html/parser-html.js @@ -9,11 +9,9 @@ const parseFrontMatter = require("../utils/front-matter/parse.js"); const getLast = require("../utils/get-last.js"); const createError = require("../common/parser-create-error.js"); const { inferParserByLanguage } = require("../common/util.js"); -const { - HTML_ELEMENT_ATTRIBUTES, - HTML_TAGS, - isUnknownNamespace, -} = require("./utils.js"); +const HTML_TAGS = require("./utils/html-tag-names.js"); +const HTML_ELEMENT_ATTRIBUTES = require("./utils/html-elements-attributes.js"); +const isUnknownNamespace = require("./utils/is-unknown-namespace.js"); const { hasPragma } = require("./pragma.js"); const { Node } = require("./ast.js"); const { parseIeConditionalComment } = require("./conditional-comment.js"); diff --git a/src/language-html/print-preprocess.js b/src/language-html/print-preprocess.js index a9c01d006..0add77b63 100644 --- a/src/language-html/print-preprocess.js +++ b/src/language-html/print-preprocess.js @@ -14,7 +14,7 @@ const { isLeadingSpaceSensitiveNode, isTrailingSpaceSensitiveNode, isWhitespaceSensitiveNode, -} = require("./utils.js"); +} = require("./utils/index.js"); const PREPROCESS_PIPELINE = [ removeIgnorableFirstLf, diff --git a/src/language-html/print/children.js b/src/language-html/print/children.js index 02d97a54a..ee8d36e15 100644 --- a/src/language-html/print/children.js +++ b/src/language-html/print/children.js @@ -11,7 +11,7 @@ const { isTextLikeNode, hasPrettierIgnore, preferHardlineAsLeadingSpaces, -} = require("../utils.js"); +} = require("../utils/index.js"); const { printOpeningTagPrefix, needsToBorrowNextOpeningTagStartMarker, diff --git a/src/language-html/print/element.js b/src/language-html/print/element.js index 98f63c05a..a00d4e3f5 100644 --- a/src/language-html/print/element.js +++ b/src/language-html/print/element.js @@ -20,7 +20,7 @@ const { isVueCustomBlock, countParents, forceBreakContent, -} = require("../utils.js"); +} = require("../utils/index.js"); const { printOpeningTagPrefix, printOpeningTag, diff --git a/src/language-html/print/tag.js b/src/language-html/print/tag.js index 63d982137..7d97ec0fd 100644 --- a/src/language-html/print/tag.js +++ b/src/language-html/print/tag.js @@ -17,7 +17,7 @@ const { isPreLikeNode, hasPrettierIgnore, shouldPreserveContent, -} = require("../utils.js"); +} = require("../utils/index.js"); function printClosingTag(node, options) { return [ diff --git a/src/language-html/printer-html.js b/src/language-html/printer-html.js index 2bb142548..67301b657 100644 --- a/src/language-html/printer-html.js +++ b/src/language-html/printer-html.js @@ -13,7 +13,7 @@ const { countChars, unescapeQuoteEntities, getTextValueParts, -} = require("./utils.js"); +} = require("./utils/index.js"); const preprocess = require("./print-preprocess.js"); const { insertPragma } = require("./pragma.js"); const { locStart, locEnd } = require("./loc.js"); diff --git a/src/language-html/utils/array-to-map.js b/src/language-html/utils/array-to-map.js new file mode 100644 index 000000000..7326daba6 --- /dev/null +++ b/src/language-html/utils/array-to-map.js @@ -0,0 +1,11 @@ +"use strict"; + +function arrayToMap(array) { + const map = Object.create(null); + for (const value of array) { + map[value] = true; + } + return map; +} + +module.exports = arrayToMap; diff --git a/src/language-html/utils/html-elements-attributes.js b/src/language-html/utils/html-elements-attributes.js new file mode 100644 index 000000000..c62a07632 --- /dev/null +++ b/src/language-html/utils/html-elements-attributes.js @@ -0,0 +1,9 @@ +"use strict"; + +const htmlElementAttributes = require("html-element-attributes"); +const mapObject = require("./map-object.js"); +const arrayToMap = require("./array-to-map.js"); + +const HTML_ELEMENT_ATTRIBUTES = mapObject(htmlElementAttributes, arrayToMap); + +module.exports = HTML_ELEMENT_ATTRIBUTES; diff --git a/src/language-html/utils/html-tag-names.js b/src/language-html/utils/html-tag-names.js new file mode 100644 index 000000000..286e4e23b --- /dev/null +++ b/src/language-html/utils/html-tag-names.js @@ -0,0 +1,8 @@ +"use strict"; + +const htmlTagNames = require("html-tag-names"); +const arrayToMap = require("./array-to-map.js"); + +const HTML_TAGS = arrayToMap(htmlTagNames); + +module.exports = HTML_TAGS; diff --git a/src/language-html/utils.js b/src/language-html/utils/index.js similarity index 94% rename from src/language-html/utils.js rename to src/language-html/utils/index.js index 4696285d5..18b46cedf 100644 --- a/src/language-html/utils.js +++ b/src/language-html/utils/index.js @@ -1,28 +1,24 @@ "use strict"; /** - * @typedef {import("../common/ast-path")} AstPath + * @typedef {import("../../common/ast-path")} AstPath */ -const htmlTagNames = require("html-tag-names"); -const htmlElementAttributes = require("html-element-attributes"); const { inferParserByLanguage, isFrontMatterNode, -} = require("../common/util.js"); +} = require("../../common/util.js"); const { builders: { line, hardline, join }, utils: { getDocParts, replaceTextEndOfLine }, -} = require("../document/index.js"); +} = require("../../document/index.js"); const { CSS_DISPLAY_TAGS, CSS_DISPLAY_DEFAULT, CSS_WHITE_SPACE_TAGS, CSS_WHITE_SPACE_DEFAULT, -} = require("./constants.evaluate.js"); - -const HTML_TAGS = arrayToMap(htmlTagNames); -const HTML_ELEMENT_ATTRIBUTES = mapObject(htmlElementAttributes, arrayToMap); +} = require("../constants.evaluate.js"); +const isUnknownNamespace = require("./is-unknown-namespace.js"); // https://infra.spec.whatwg.org/#ascii-whitespace const HTML_WHITESPACE = new Set(["\t", "\n", "\f", "\r", " "]); @@ -47,22 +43,6 @@ const getLeadingAndTrailingHtmlWhitespace = (string) => { }; const hasHtmlWhitespace = (string) => /[\t\n\f\r ]/.test(string); -function arrayToMap(array) { - const map = Object.create(null); - for (const value of array) { - map[value] = true; - } - return map; -} - -function mapObject(object, fn) { - const newObject = Object.create(null); - for (const [key, value] of Object.entries(object)) { - newObject[key] = fn(value, key); - } - return newObject; -} - function shouldPreserveContent(node, options) { // unterminated node in ie conditional comment // e.g. @@ -539,14 +519,6 @@ function getNodeCssStyleDisplay(node, options) { } } -function isUnknownNamespace(node) { - return ( - node.type === "element" && - !node.hasExplicitNamespace && - !["html", "svg"].includes(node.namespace) - ); -} - function getNodeCssStyleWhiteSpace(node) { return ( (node.type === "element" && @@ -667,8 +639,6 @@ function getTextValueParts(node, value = node.value) { } module.exports = { - HTML_ELEMENT_ATTRIBUTES, - HTML_TAGS, htmlTrim, htmlTrimPreserveIndentation, hasHtmlWhitespace, diff --git a/src/language-html/utils/is-unknown-namespace.js b/src/language-html/utils/is-unknown-namespace.js new file mode 100644 index 000000000..594df3445 --- /dev/null +++ b/src/language-html/utils/is-unknown-namespace.js @@ -0,0 +1,11 @@ +"use strict"; + +function isUnknownNamespace(node) { + return ( + node.type === "element" && + !node.hasExplicitNamespace && + !["html", "svg"].includes(node.namespace) + ); +} + +module.exports = isUnknownNamespace; diff --git a/src/language-html/utils/map-object.js b/src/language-html/utils/map-object.js new file mode 100644 index 000000000..030b9870a --- /dev/null +++ b/src/language-html/utils/map-object.js @@ -0,0 +1,11 @@ +"use strict"; + +function mapObject(object, fn) { + const newObject = Object.create(null); + for (const [key, value] of Object.entries(object)) { + newObject[key] = fn(value, key); + } + return newObject; +} + +module.exports = mapObject;