prettier/src/main/multiparser.js

47 lines
1.2 KiB
JavaScript

"use strict";
const normalize = require("./options").normalize;
const comments = require("./comments");
function printSubtree(path, print, options, printAstToDoc) {
if (options.printer.embed) {
return options.printer.embed(
path,
print,
(text, partialNextOptions) =>
textToDoc(text, partialNextOptions, options, printAstToDoc),
options
);
}
}
function textToDoc(text, partialNextOptions, parentOptions, printAstToDoc) {
const nextOptions = normalize(
Object.assign({}, parentOptions, partialNextOptions, {
parentParser: parentOptions.parser,
embeddedInHtml: !!(
parentOptions.embeddedInHtml ||
parentOptions.parser === "html" ||
parentOptions.parser === "vue" ||
parentOptions.parser === "angular" ||
parentOptions.parser === "lwc"
),
originalText: text
}),
{ passThrough: true }
);
const result = require("./parser").parse(text, nextOptions);
const ast = result.ast;
text = result.text;
const astComments = ast.comments;
delete ast.comments;
comments.attach(astComments, ast, text, nextOptions);
return printAstToDoc(ast, nextOptions);
}
module.exports = {
printSubtree
};