From e27fe7b82bb186e4849cb20702dff91b4ad22bb1 Mon Sep 17 00:00:00 2001 From: fisker Date: Mon, 25 May 2020 09:54:27 +0800 Subject: [PATCH 1/2] Support babel `data-type="module"` --- src/language-html/printer-html.js | 29 +++++++-------- .../script/__snapshots__/jsfmt.spec.js.snap | 36 +++++++++++++++++++ tests/html/script/babel.html | 14 ++++++++ 3 files changed, 65 insertions(+), 14 deletions(-) create mode 100644 tests/html/script/babel.html diff --git a/src/language-html/printer-html.js b/src/language-html/printer-html.js index ebd75b61d6fe..4d30371cf127 100644 --- a/src/language-html/printer-html.js +++ b/src/language-html/printer-html.js @@ -72,24 +72,25 @@ function embed(path, print, textToDoc, options) { parser === "markdown" ? dedentString(node.value.replace(/^[^\S\n]*?\n/, "")) : node.value; + const textToDocOptions = { parser }; + if (options.parser === "html" && parser === "babel") { + let sourceType = "script"; + const { attrMap } = node.parent; + if ( + attrMap && + (attrMap.type === "module" || + (attrMap.type === "text/babel" && + attrMap["data-type"] === "module")) + ) { + sourceType = "module"; + } + textToDocOptions.__babelSourceType = sourceType; + } return builders.concat([ concat([ breakParent, printOpeningTagPrefix(node, options), - stripTrailingHardline( - textToDoc( - value, - options.parser === "html" && parser === "babel" - ? { - parser, - __babelSourceType: - node.attrMap && node.attrMap.type === "module" - ? "module" - : "script", - } - : { parser } - ) - ), + stripTrailingHardline(textToDoc(value, textToDocOptions)), printClosingTagSuffix(node, options), ]), ]); diff --git a/tests/html/script/__snapshots__/jsfmt.spec.js.snap b/tests/html/script/__snapshots__/jsfmt.spec.js.snap index fcbce05c35cb..c93909badee3 100644 --- a/tests/html/script/__snapshots__/jsfmt.spec.js.snap +++ b/tests/html/script/__snapshots__/jsfmt.spec.js.snap @@ -1,5 +1,41 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`babel.html format 1`] = ` +====================================options===================================== +parsers: ["html"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + +=====================================output===================================== + + + + +================================================================================ +`; + exports[`legacy.html format 1`] = ` ====================================options===================================== parsers: ["html"] diff --git a/tests/html/script/babel.html b/tests/html/script/babel.html new file mode 100644 index 000000000000..75ff3bed275a --- /dev/null +++ b/tests/html/script/babel.html @@ -0,0 +1,14 @@ + + + From d64f6aef0a20e2794c7eb06efa0dba98e7f9073d Mon Sep 17 00:00:00 2001 From: fisker Date: Mon, 25 May 2020 14:36:37 +0800 Subject: [PATCH 2/2] Update changelog --- changelog_unreleased/html/pr-8173.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/changelog_unreleased/html/pr-8173.md b/changelog_unreleased/html/pr-8173.md index 7be9a7858022..e08af3f8e55d 100644 --- a/changelog_unreleased/html/pr-8173.md +++ b/changelog_unreleased/html/pr-8173.md @@ -1,4 +1,9 @@ -#### Support legacy HTML-like comments script blocks ([#8173](https://github.com/prettier/prettier/pull/8173) by [@fisker](https://github.com/fisker)) +#### Support legacy HTML-like comments script blocks ([#8173](https://github.com/prettier/prettier/pull/8173) by [@fisker](https://github.com/fisker), [#8394](https://github.com/prettier/prettier/pull/8394) by [@fisker](https://github.com/fisker)) + +Previously we parse html `