diff --git a/scripts/tools/eslint-plugin-prettier-internal-rules/massage-ast-parameter-names.js b/scripts/tools/eslint-plugin-prettier-internal-rules/massage-ast-parameter-names.js index aa27cfd7e..f88018d3e 100644 --- a/scripts/tools/eslint-plugin-prettier-internal-rules/massage-ast-parameter-names.js +++ b/scripts/tools/eslint-plugin-prettier-internal-rules/massage-ast-parameter-names.js @@ -5,7 +5,7 @@ const massageAstFunctionSelector = [ "[async!=true]", "[generator!=true]", '[id.type="Identifier"]', - '[id.name="clean"]', + '[id.name="massageAstNode"]', ].join(""); const getVariableIdentifiers = ({ identifiers, references }) => [ @@ -30,7 +30,7 @@ export default { }, create: (context) => Object.fromEntries( - ["original", "cloned"].map((name, index) => [ + ["original", "cloned", "parent"].map((name, index) => [ `${massageAstFunctionSelector} > Identifier[name!="${name}"].params:nth-child(${index + 1})`, (parameter) => { const variables = context.sourceCode.getDeclaredVariables( diff --git a/scripts/tools/eslint-plugin-prettier-internal-rules/test.js b/scripts/tools/eslint-plugin-prettier-internal-rules/test.js index 946984ff3..bc2a0b768 100644 --- a/scripts/tools/eslint-plugin-prettier-internal-rules/test.js +++ b/scripts/tools/eslint-plugin-prettier-internal-rules/test.js @@ -946,18 +946,26 @@ test("prefer-ast-path-getters", { test("massage-ast-parameter-names", { valid: [ - "function notNamedClean(a, b) {}", - "function clean(original, cloned) {}", + "function notMatchedName(a, b) {}", + "function massageAstNode(original, cloned) {}", ], invalid: [ { - code: "function clean(theOriginalNode, cloned) {delete theOriginalNode.property}", - output: "function clean(original, cloned) {delete original.property}", + code: "function massageAstNode(theOriginalNode, cloned) {delete theOriginalNode.property}", + output: + "function massageAstNode(original, cloned) {delete original.property}", errors: 1, }, { - code: "function clean(original, theClonedNode) {delete theClonedNode.property}", - output: "function clean(original, cloned) {delete cloned.property}", + code: "function massageAstNode(original, theClonedNode) {delete theClonedNode.property}", + output: + "function massageAstNode(original, cloned) {delete cloned.property}", + errors: 1, + }, + { + code: "function massageAstNode(original, cloned, theParentNode) {delete theParentNode.property}", + output: + "function massageAstNode(original, cloned, parent) {delete parent.property}", errors: 1, }, ], diff --git a/src/language-css/clean.js b/src/language-css/massage-ast/index.js similarity index 96% rename from src/language-css/clean.js rename to src/language-css/massage-ast/index.js index edb198875..bb02ae593 100644 --- a/src/language-css/clean.js +++ b/src/language-css/massage-ast/index.js @@ -1,4 +1,4 @@ -import { isFrontMatter } from "../main/front-matter/index.js"; +import { isFrontMatter } from "../../main/front-matter/index.js"; const ignoredProperties = new Set([ "raw", // front-matter @@ -11,7 +11,7 @@ const ignoredProperties = new Set([ "spaces", ]); -function clean(original, cloned, parent) { +function massageAstNode(original, cloned, parent) { if ( original.type === "css-comment" && parent.type === "css-root" && @@ -217,10 +217,10 @@ function clean(original, cloned, parent) { } } -clean.ignoredProperties = ignoredProperties; +massageAstNode.ignoredProperties = ignoredProperties; function cleanCSSStrings(value) { return value.replaceAll("'", '"').replaceAll(/\\([^\da-f])/gi, "$1"); } -export default clean; +export { massageAstNode }; diff --git a/src/language-css/printer-postcss.js b/src/language-css/printer-postcss.js index ad504908c..80990134e 100644 --- a/src/language-css/printer-postcss.js +++ b/src/language-css/printer-postcss.js @@ -17,10 +17,10 @@ import { import isNonEmptyArray from "../utilities/is-non-empty-array.js"; import printString from "../utilities/print-string.js"; import UnexpectedNodeError from "../utilities/unexpected-node-error.js"; -import clean from "./clean.js"; import embed from "./embed.js"; import getVisitorKeys from "./get-visitor-keys.js"; import { locEnd, locStart } from "./loc.js"; +import { massageAstNode } from "./massage-ast/index.js"; import { insertPragma } from "./pragma.js"; import printCommaSeparatedValueGroup from "./print/comma-separated-value-group.js"; import { @@ -595,7 +595,7 @@ const printer = { print: genericPrint, embed, insertPragma, - massageAstNode: clean, + massageAstNode, getVisitorKeys, }; diff --git a/src/language-graphql/massage-ast/index.js b/src/language-graphql/massage-ast/index.js new file mode 100644 index 000000000..6844f176b --- /dev/null +++ b/src/language-graphql/massage-ast/index.js @@ -0,0 +1,15 @@ +function massageAstNode(original, cloned /* , parent */) { + // We print single line `""" string """` as multiple line string, + // and the parser ignores space in multiple line string + if ( + original.kind === "StringValue" && + original.block && + !original.value.includes("\n") + ) { + cloned.value = original.value.trim(); + } +} + +massageAstNode.ignoredProperties = new Set(["loc", "comments"]); + +export { massageAstNode }; diff --git a/src/language-graphql/printer-graphql.js b/src/language-graphql/printer-graphql.js index 129a0f1c8..896f4a11b 100644 --- a/src/language-graphql/printer-graphql.js +++ b/src/language-graphql/printer-graphql.js @@ -13,6 +13,7 @@ import isNonEmptyArray from "../utilities/is-non-empty-array.js"; import UnexpectedNodeError from "../utilities/unexpected-node-error.js"; import getVisitorKeys from "./get-visitor-keys.js"; import { locEnd, locStart } from "./loc.js"; +import { massageAstNode } from "./massage-ast/index.js"; import { insertPragma } from "./pragma.js"; import printDescription from "./print/description.js"; @@ -491,19 +492,6 @@ function printVariableDefinitions(path, print) { ]); } -function clean(original, cloned /* , parent */) { - // We print single line `""" string """` as multiple line string, - // and the parser ignores space in multiple line string - if ( - original.kind === "StringValue" && - original.block && - !original.value.includes("\n") - ) { - cloned.value = original.value.trim(); - } -} -clean.ignoredProperties = new Set(["loc", "comments"]); - function hasPrettierIgnore(path) { const { node } = path; return node?.comments?.some( @@ -513,7 +501,7 @@ function hasPrettierIgnore(path) { const printer = { print: genericPrint, - massageAstNode: clean, + massageAstNode, hasPrettierIgnore, insertPragma, printComment, diff --git a/src/language-handlebars/clean.js b/src/language-handlebars/massage-ast/index.js similarity index 83% rename from src/language-handlebars/clean.js rename to src/language-handlebars/massage-ast/index.js index a6b229145..76aa5f3f8 100644 --- a/src/language-handlebars/clean.js +++ b/src/language-handlebars/massage-ast/index.js @@ -1,6 +1,6 @@ -import htmlWhitespace from "../utilities/html-whitespace.js"; +import htmlWhitespace from "../../utilities/html-whitespace.js"; -function clean(original, cloned, parent) { +function massageAstNode(original, cloned, parent) { // (Glimmer/HTML) ignore TextNode if (original.type === "TextNode") { const trimmed = original.chars.trim(); @@ -48,6 +48,6 @@ function clean(original, cloned, parent) { } } -clean.ignoredProperties = new Set(["loc", "selfClosing"]); +massageAstNode.ignoredProperties = new Set(["loc", "selfClosing"]); -export default clean; +export { massageAstNode }; diff --git a/src/language-handlebars/printer-glimmer.js b/src/language-handlebars/printer-glimmer.js index 49fe24c78..377ecd5e7 100644 --- a/src/language-handlebars/printer-glimmer.js +++ b/src/language-handlebars/printer-glimmer.js @@ -14,10 +14,10 @@ import { getPreferredQuote } from "../utilities/get-preferred-quote.js"; import htmlWhitespace from "../utilities/html-whitespace.js"; import isNonEmptyArray from "../utilities/is-non-empty-array.js"; import UnexpectedNodeError from "../utilities/unexpected-node-error.js"; -import clean from "./clean.js"; import embed from "./embed.js"; import getVisitorKeys from "./get-visitor-keys.js"; import { locEnd, locStart } from "./loc.js"; +import { massageAstNode } from "./massage-ast/index.js"; import { hasPrettierIgnore, isVoidElement, @@ -848,7 +848,7 @@ const printer = { }, }, print, - massageAstNode: clean, + massageAstNode, hasPrettierIgnore, getVisitorKeys, embed, diff --git a/src/language-html/clean.js b/src/language-html/massage-ast/index.js similarity index 95% rename from src/language-html/clean.js rename to src/language-html/massage-ast/index.js index b9491ba3a..e0976edb2 100644 --- a/src/language-html/clean.js +++ b/src/language-html/massage-ast/index.js @@ -21,7 +21,7 @@ const embeddedAngularControlFlowBlocks = new Set([ "case", ]); -function clean(original, cloned, parent) { +function massageAstNode(original, cloned, parent) { if (original.kind === "text" || original.kind === "comment") { return null; } @@ -103,6 +103,6 @@ function clean(original, cloned, parent) { } } -clean.ignoredProperties = ignoredProperties; +massageAstNode.ignoredProperties = ignoredProperties; -export default clean; +export { massageAstNode }; diff --git a/src/language-html/printer-html.js b/src/language-html/printer-html.js index e0cd1ea8e..d1caf98e1 100644 --- a/src/language-html/printer-html.js +++ b/src/language-html/printer-html.js @@ -13,10 +13,10 @@ import { import { getPreferredQuote } from "../utilities/get-preferred-quote.js"; import htmlWhitespace from "../utilities/html-whitespace.js"; import UnexpectedNodeError from "../utilities/unexpected-node-error.js"; -import clean from "./clean.js"; import embed from "./embed.js"; import getVisitorKeys from "./get-visitor-keys.js"; import { locEnd, locStart } from "./loc.js"; +import { massageAstNode } from "./massage-ast/index.js"; import { insertPragma } from "./pragma.js"; import { printAngularControlFlowBlock, @@ -169,7 +169,7 @@ const printer = { preprocess, print: genericPrint, insertPragma, - massageAstNode: clean, + massageAstNode, embed, getVisitorKeys, }; diff --git a/src/language-js/clean/chain-expression.js b/src/language-js/massage-ast/chain-expression.js similarity index 85% rename from src/language-js/clean/chain-expression.js rename to src/language-js/massage-ast/chain-expression.js index a478360af..3d0e9ab0c 100644 --- a/src/language-js/clean/chain-expression.js +++ b/src/language-js/massage-ast/chain-expression.js @@ -8,7 +8,11 @@ import { @import {Node} from "../types/estree.js" */ -function cleanChainExpression(cloned, original) { +/** +@param {Node} original +@param {any} cloned +*/ +function cleanChainExpression(original, cloned) { // We don't add parentheses to `(a?.b)?.c` if (original.type === "ChainExpression") { cleanEstreeChainExpression(cloned); @@ -22,6 +26,9 @@ function cleanChainExpression(cloned, original) { } } +/** +@param {Node} node +*/ function getChainElementProperty(node) { if (isMemberExpression(node)) { return "object"; @@ -36,6 +43,9 @@ function getChainElementProperty(node) { } } +/** +@param {Node} node +*/ function getChainElement(node) { const property = getChainElementProperty(node); if (property) { @@ -43,6 +53,9 @@ function getChainElement(node) { } } +/** +@param {Node} node +*/ function cleanEstreeChainExpression(node) { for ( node = getChainElement(node); @@ -59,12 +72,16 @@ function cleanEstreeChainExpression(node) { } } +/** +@param {Node} node +*/ function cleanBabelChainExpression(node) { for ( node = getChainElement(node); node.type === "MemberExpression" || node.type === "CallExpression"; node = getChainElement(node) ) { + // @ts-expect-error -- intentionally to mutate node.type = `Optional${node.type}`; } } diff --git a/src/language-js/clean.js b/src/language-js/massage-ast/index.js similarity index 74% rename from src/language-js/clean.js rename to src/language-js/massage-ast/index.js index 563f3ebb8..0c68f01da 100644 --- a/src/language-js/clean.js +++ b/src/language-js/massage-ast/index.js @@ -1,14 +1,15 @@ -import { cleanChainExpression } from "./clean/chain-expression.js"; import { isArrayExpression, isBigIntLiteral, isMeaningfulEmptyStatement, - isNumericLiteral, isStringLiteral, -} from "./utilities/index.js"; +} from "../utilities/index.js"; +import { cleanChainExpression } from "./chain-expression.js"; +import { cleanKey } from "./key.js"; +import { cleanRegExpLiteral } from "./regexp-literal.js"; /** -@import {Node} from "./types/estree.js" +@import {Node} from "../types/estree.js" */ const ignoredProperties = new Set([ @@ -35,27 +36,25 @@ const removeTemplateElementsValue = (node) => { } }; -function cleanKey(cloned, original, property) { - const key = original[property]; - if (isStringLiteral(key) || isNumericLiteral(key)) { - cloned[property] = String(key.value); - } - - if (key.type === "Identifier") { - cloned[property] = key.name; - } -} - /** @param {Node} original @param {any} cloned @param {Node | undefined} parent */ -function clean(original, cloned, parent) { +function massageAstNode(original, cloned, parent) { if (original.type === "Program") { delete cloned.sourceType; } + // We don't add parentheses to `(a?.b)?.c` + cleanChainExpression(original, cloned); + + // We quote/unquote keys + cleanKey(original, cloned); + + // We sort regex flags + cleanRegExpLiteral(original, cloned); + if ( (isBigIntLiteral(original) || original.type === "BigIntLiteralTypeAnnotation") && @@ -64,14 +63,6 @@ function clean(original, cloned, parent) { cloned.bigint = original.bigint.toLowerCase(); } - if (original.type === "RegExpLiteral") { - cloned.flags = [...original.flags].sort().join(""); - } - - if (original.type === "Literal" && "regex" in original) { - cloned.regex.flags = [...original.regex.flags].sort().join(""); - } - // We remove extra `;` and add them when needed if ( original.type === "EmptyStatement" && @@ -93,33 +84,6 @@ function clean(original, cloned, parent) { return null; } - // We change {'key': value} into {key: value}. - // And {key: value} into {'key': value}. - // Also for (some) number keys. - if ( - (original.type === "Property" || - original.type === "ObjectProperty" || - original.type === "MethodDefinition" || - original.type === "ClassProperty" || - original.type === "ClassMethod" || - original.type === "PropertyDefinition" || - original.type === "TSDeclareMethod" || - original.type === "TSPropertySignature" || - original.type === "TSMethodSignature" || - original.type === "ObjectTypeProperty" || - original.type === "ImportAttribute" || - original.type === "RecordDeclarationProperty" || - original.type === "RecordDeclarationStaticProperty") && - // @ts-expect-error -- safe - !original.computed - ) { - cleanKey(cloned, original, "key"); - } - - if (original.type === "TSEnumMember") { - cleanKey(cloned, original, "id"); - } - // Remove raw and cooked values from TemplateElement when it's CSS // styled-jsx if ( @@ -224,9 +188,6 @@ function clean(original, cloned, parent) { removeTemplateElementsValue(cloned); } - // We don't add parentheses to `(a?.b)?.c` - cleanChainExpression(cloned, original); - // https://github.com/babel/babel/issues/17719 if ( (original.type === "ClassDeclaration" || @@ -243,6 +204,6 @@ function clean(original, cloned, parent) { } } -clean.ignoredProperties = ignoredProperties; +massageAstNode.ignoredProperties = ignoredProperties; -export default clean; +export { massageAstNode }; diff --git a/src/language-js/massage-ast/key.js b/src/language-js/massage-ast/key.js new file mode 100644 index 000000000..beefa7dfa --- /dev/null +++ b/src/language-js/massage-ast/key.js @@ -0,0 +1,51 @@ +import { isNumericLiteral, isStringLiteral } from "../utilities/index.js"; + +/** +@import {Node} from "../types/estree.js" +*/ + +function cleanNodeKey(cloned, original, property) { + const key = original[property]; + if (isStringLiteral(key) || isNumericLiteral(key)) { + cloned[property] = String(key.value); + } + + if (key.type === "Identifier") { + cloned[property] = key.name; + } +} + +/** +@param {Node} original +@param {any} cloned +*/ +function cleanKey(original, cloned) { + // We change {'key': value} into {key: value}. + // And {key: value} into {'key': value}. + // Also for (some) number keys. + if ( + (original.type === "Property" || + original.type === "ObjectProperty" || + original.type === "MethodDefinition" || + original.type === "ClassProperty" || + original.type === "ClassMethod" || + original.type === "PropertyDefinition" || + original.type === "TSDeclareMethod" || + original.type === "TSPropertySignature" || + original.type === "TSMethodSignature" || + original.type === "ObjectTypeProperty" || + original.type === "ImportAttribute" || + original.type === "RecordDeclarationProperty" || + original.type === "RecordDeclarationStaticProperty") && + // @ts-expect-error -- safe + !original.computed + ) { + cleanNodeKey(cloned, original, "key"); + } + + if (original.type === "TSEnumMember") { + cleanNodeKey(cloned, original, "id"); + } +} + +export { cleanKey }; diff --git a/src/language-js/massage-ast/regexp-literal.js b/src/language-js/massage-ast/regexp-literal.js new file mode 100644 index 000000000..df7017a39 --- /dev/null +++ b/src/language-js/massage-ast/regexp-literal.js @@ -0,0 +1,19 @@ +/** +@import {Node} from "../types/estree.js" +*/ + +/** +@param {Node} original +@param {any} cloned +*/ +function cleanRegExpLiteral(original, cloned) { + if (original.type === "RegExpLiteral") { + cloned.flags = [...original.flags].sort().join(""); + } + + if (original.type === "Literal" && "regex" in original) { + cloned.regex.flags = [...original.regex.flags].sort().join(""); + } +} + +export { cleanRegExpLiteral }; diff --git a/src/language-js/printers.js b/src/language-js/printers.js index b8fbc5ec1..99e37546f 100644 --- a/src/language-js/printers.js +++ b/src/language-js/printers.js @@ -2,12 +2,12 @@ const features = { // TODO: Make this default behavior experimental_avoidAstMutation: true, }; -import massageAstNode from "./clean.js"; import canAttachComment from "./comments/can-attach-comment.js"; import handleComments from "./comments/handle-comments.js"; import isGap from "./comments/is-gap.js"; import willPrintOwnComments from "./comments/will-print-own-comments.js"; import embed from "./embed/index.js"; +import { massageAstNode } from "./massage-ast/index.js"; import { insertPragma } from "./pragma.js"; import { printComment } from "./print/comment.js"; import { printEstree } from "./print/index.js"; diff --git a/src/language-json/massage-ast/index.js b/src/language-json/massage-ast/index.js new file mode 100644 index 000000000..ca6bc52df --- /dev/null +++ b/src/language-json/massage-ast/index.js @@ -0,0 +1,79 @@ +import { getRaw } from "../utilities.js"; + +const ignoredProperties = new Set([ + "start", + "end", + "loc", + "comments", + "leadingComments", + "trailingComments", + "innerComments", + "errors", + "range", + "tokens", +]); + +function massageAstNode(original, cloned /* , parent*/) { + const { type } = original; + + // We print quoted key + if (type === "ObjectProperty") { + const { key } = original; + if (key.type === "Identifier") { + const { name } = key; + cloned.key = { + type: "StringLiteral", + value: name, + extra: { rawValue: name }, + }; + } else if (key.type === "NumericLiteral") { + const raw = getRaw(key); + if (String(Number(raw)) === raw) { + cloned.key = { + type: "StringLiteral", + value: raw, + extra: { rawValue: raw }, + }; + } + } + } + + if (type === "StringLiteral") { + // We only remove `\` before `"`, but it's hard to detect if it's escaped + delete cloned.extra.raw; + } + + if (type === "UnaryExpression" && original.operator === "+") { + return cloned.argument; + } + + if (type === "ArrayExpression" || type === "ObjectExpression") { + cloned.extra ??= {}; + if (original.extra?.trailingComma) { + delete cloned.extra.trailingComma; + } + } + + // We print holes in array as `null` + if (type === "ArrayExpression") { + for (const [index, element] of original.elements.entries()) { + if (element === null) { + cloned.elements.splice(index, 0, { type: "NullLiteral" }); + } + } + return; + } + // We print `TemplateLiteral` as string + if (type === "TemplateLiteral") { + const value = original.quasis[0].value.cooked; + return { + type: "StringLiteral", + value, + extra: { rawValue: value }, + }; + } +} + +massageAstNode.ignoredProperties = ignoredProperties; + +export { massageAstNode }; diff --git a/src/language-json/print/json.js b/src/language-json/print/json.js index e4c8126b0..64019d19e 100644 --- a/src/language-json/print/json.js +++ b/src/language-json/print/json.js @@ -74,80 +74,4 @@ function isObjectKey(path) { return path.key === "key" && path.parent.type === "ObjectProperty"; } -const ignoredProperties = new Set([ - "start", - "end", - "loc", - "comments", - "leadingComments", - "trailingComments", - "innerComments", - "errors", - "range", - "tokens", -]); - -function clean(original, cloned /* , parent*/) { - const { type } = original; - - // We print quoted key - if (type === "ObjectProperty") { - const { key } = original; - if (key.type === "Identifier") { - const { name } = key; - cloned.key = { - type: "StringLiteral", - value: name, - extra: { rawValue: name }, - }; - } else if (key.type === "NumericLiteral") { - const raw = getRaw(key); - if (String(Number(raw)) === raw) { - cloned.key = { - type: "StringLiteral", - value: raw, - extra: { rawValue: raw }, - }; - } - } - } - - if (type === "StringLiteral") { - // We only remove `\` before `"`, but it's hard to detect if it's escaped - delete cloned.extra.raw; - } - - if (type === "UnaryExpression" && original.operator === "+") { - return cloned.argument; - } - - if (type === "ArrayExpression" || type === "ObjectExpression") { - cloned.extra ??= {}; - if (original.extra?.trailingComma) { - delete cloned.extra.trailingComma; - } - } - - // We print holes in array as `null` - if (type === "ArrayExpression") { - for (const [index, element] of original.elements.entries()) { - if (element === null) { - cloned.elements.splice(index, 0, { type: "NullLiteral" }); - } - } - return; - } - // We print `TemplateLiteral` as string - if (type === "TemplateLiteral") { - const value = original.quasis[0].value.cooked; - return { - type: "StringLiteral", - value, - extra: { rawValue: value }, - }; - } -} - -clean.ignoredProperties = ignoredProperties; - -export { clean, printJson }; +export { printJson }; diff --git a/src/language-json/printers.js b/src/language-json/printers.js index e82139fef..b69934a23 100644 --- a/src/language-json/printers.js +++ b/src/language-json/printers.js @@ -1,6 +1,6 @@ import getVisitorKeys from "./get-visitor-keys.js"; +import { massageAstNode } from "./massage-ast/index.js"; import { printJson } from "./print/index.js"; -import { clean as massageAstNode } from "./print/json.js"; const estreeJsonPrinter = { massageAstNode, diff --git a/src/language-markdown/clean.js b/src/language-markdown/massage-ast/index.js similarity index 88% rename from src/language-markdown/clean.js rename to src/language-markdown/massage-ast/index.js index a3a0d1ee1..5ff81f857 100644 --- a/src/language-markdown/clean.js +++ b/src/language-markdown/massage-ast/index.js @@ -1,12 +1,12 @@ import collapseWhiteSpace from "collapse-white-space"; -import { isFrontMatter } from "../main/front-matter/index.js"; -import { hasPragma } from "./pragma.js"; +import { isFrontMatter } from "../../main/front-matter/index.js"; +import { hasPragma } from "../pragma.js"; const ignoredProperties = new Set([ "position", "raw", // front-matter ]); -function clean(original, cloned, parent) { +function massageAstNode(original, cloned, parent) { // for codeblock if ( original.type === "code" || @@ -86,6 +86,6 @@ function clean(original, cloned, parent) { } } -clean.ignoredProperties = ignoredProperties; +massageAstNode.ignoredProperties = ignoredProperties; -export default clean; +export { massageAstNode }; diff --git a/src/language-markdown/printers.js b/src/language-markdown/printers.js index 036f0c9b2..0e653498e 100644 --- a/src/language-markdown/printers.js +++ b/src/language-markdown/printers.js @@ -1,5 +1,5 @@ -import clean from "./clean.js"; import embed from "./embed.js"; +import { massageAstNode } from "./massage-ast/index.js"; import { insertPragma } from "./pragma.js"; import { printMdast, printPrettierIgnored } from "./print/index.js"; import preprocess from "./print/preprocess.js"; @@ -17,7 +17,7 @@ const printer = { preprocess, print: printMdast, embed, - massageAstNode: clean, + massageAstNode, hasPrettierIgnore, insertPragma, getVisitorKeys, diff --git a/src/language-yaml/clean.js b/src/language-yaml/massage-ast/index.js similarity index 83% rename from src/language-yaml/clean.js rename to src/language-yaml/massage-ast/index.js index 41145f1f3..8415a9285 100644 --- a/src/language-yaml/clean.js +++ b/src/language-yaml/massage-ast/index.js @@ -1,6 +1,6 @@ -import { isPragma } from "./pragma.js"; +import { isPragma } from "../pragma.js"; -function clean(original, cloned /* , parent */) { +function massageAstNode(original, cloned /* , parent */) { switch (original.type) { case "comment": // insert pragma @@ -35,6 +35,6 @@ function clean(original, cloned /* , parent */) { break; } } -clean.ignoredProperties = new Set(["position"]); +massageAstNode.ignoredProperties = new Set(["position"]); -export default clean; +export { massageAstNode }; diff --git a/src/language-yaml/printer-yaml.js b/src/language-yaml/printer-yaml.js index 2506bea7d..84da9b1ba 100644 --- a/src/language-yaml/printer-yaml.js +++ b/src/language-yaml/printer-yaml.js @@ -12,10 +12,10 @@ import { } from "../document/index.js"; import isPreviousLineEmpty from "../utilities/is-previous-line-empty.js"; import UnexpectedNodeError from "../utilities/unexpected-node-error.js"; -import clean from "./clean.js"; import embed from "./embed.js"; import getVisitorKeys from "./get-visitor-keys.js"; import { locStart } from "./loc.js"; +import { massageAstNode } from "./massage-ast/index.js"; import { insertPragma } from "./pragma.js"; import printBlock from "./print/block.js"; import { @@ -419,7 +419,7 @@ const printer = { preprocess, embed, print: genericPrint, - massageAstNode: clean, + massageAstNode, insertPragma, getVisitorKeys, };