From e78e07e2ad8fef775ad4240cfa293dfd38b5bcaa Mon Sep 17 00:00:00 2001 From: Lucas Azzola Date: Thu, 22 Jun 2017 06:41:24 +1000 Subject: [PATCH] refactor(multiparser): move css expression doc printing to transformCssDoc (#2214) --- src/multiparser.js | 10 +++++++--- src/printer.js | 5 +---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/multiparser.js b/src/multiparser.js index 221b753e9..7347bd89d 100644 --- a/src/multiparser.js +++ b/src/multiparser.js @@ -8,12 +8,12 @@ const hardline = docBuilders.hardline; const softline = docBuilders.softline; const concat = docBuilders.concat; -function printSubtree(subtreeParser, options, expressionDocs) { +function printSubtree(subtreeParser, path, print, options) { const next = Object.assign({}, { transformDoc: doc => doc }, subtreeParser); next.options = Object.assign({}, options, next.options); const ast = require("./parser").parse(next.text, next.options); const nextDoc = require("./printer").printAstToDoc(ast, next.options); - return next.transformDoc(nextDoc, expressionDocs); + return next.transformDoc(nextDoc, { path, print }); } /** @@ -163,7 +163,11 @@ function fromHtmlParser2(path, options) { } } -function transformCssDoc(quasisDoc, expressionDocs) { +function transformCssDoc(quasisDoc, parent) { + const parentNode = parent.path.getValue(); + const expressionDocs = parentNode.expressions + ? parent.path.map(parent.print, "expressions") + : []; const newDoc = replacePlaceholders(quasisDoc, expressionDocs); if (!newDoc) { throw new Error("Couldn't insert all the expressions"); diff --git a/src/printer.js b/src/printer.js index 36c2f859c..08f440b66 100644 --- a/src/printer.js +++ b/src/printer.js @@ -82,10 +82,7 @@ function genericPrint(path, options, printPath, args) { const next = multiparser.getSubtreeParser(path, options); if (next) { try { - const expressionDocs = node.expressions - ? path.map(printPath, "expressions") - : []; - return multiparser.printSubtree(next, options, expressionDocs); + return multiparser.printSubtree(next, path, printPath, options); } catch (error) { if (process.env.PRETTIER_DEBUG) { console.error(error);