diff --git a/src/language-html/parser-html.js b/src/language-html/parser-html.js index 165653e12..32c8e00bd 100644 --- a/src/language-html/parser-html.js +++ b/src/language-html/parser-html.js @@ -87,7 +87,7 @@ function ngHtmlParser( return false; } const language = node.attrs.find((attr) => attr.name === "lang")?.value; - return !language || inferParserByLanguage(language, options) === "html"; + return !language || inferParserByLanguage(options, language) === "html"; }; if (rootNodes.some(shouldParseAsHTML)) { /** @type {ParserTreeResult | undefined} */ diff --git a/src/language-html/utils/index.js b/src/language-html/utils/index.js index c23f9e356..3bdee04c8 100644 --- a/src/language-html/utils/index.js +++ b/src/language-html/utils/index.js @@ -386,7 +386,7 @@ function inferStyleParser(node, options) { // But, we need to handle `"stylus"` here for printing a style block in Vue SFC as stylus code by external plugin. // https://github.com/prettier/prettier/pull/12707 if (lang === "stylus") { - return inferParserByLanguage("stylus", options); + return inferParserByLanguage(options, "stylus"); } } @@ -406,7 +406,7 @@ function inferScriptParser(node, options) { return ( _inferScriptParser(node) || (!("src" in node.attrMap) && - inferParserByLanguage(node.attrMap.lang, options)) + inferParserByLanguage(options, node.attrMap.lang)) ); } } diff --git a/src/language-markdown/embed.js b/src/language-markdown/embed.js index 1e4c509ba..4c80d772a 100644 --- a/src/language-markdown/embed.js +++ b/src/language-markdown/embed.js @@ -9,7 +9,7 @@ function embed(path, options) { const { node } = path; if (node.type === "code" && node.lang !== null) { - const parser = inferParserByLanguage(node.lang, options); + const parser = inferParserByLanguage(options, node.lang); if (parser) { return async (textToDoc) => { const styleUnit = options.__inJsTemplate ? "~" : "`"; diff --git a/src/utils/infer-parser-by-language.js b/src/utils/infer-parser-by-language.js index 18af7863f..36e147553 100644 --- a/src/utils/infer-parser-by-language.js +++ b/src/utils/infer-parser-by-language.js @@ -1,7 +1,10 @@ -import { getSupportInfo } from "../main/support.js"; +function inferParserByLanguage(options, language) { + if (!language) { + return; + } + + const languages = options.plugins.flatMap((plugin) => plugin.languages ?? []); -function inferParserByLanguage(language, options) { - const { languages } = getSupportInfo({ plugins: options.plugins }); const matched = languages.find(({ name }) => name.toLowerCase() === language) ?? languages.find(({ aliases }) => aliases?.includes(language)) ??