30 lines
1.2 KiB
JavaScript
30 lines
1.2 KiB
JavaScript
import { builders } from "prettier/doc";
|
|
import { findBaseIndent, map, onlyDefinedKey, printSingle } from "./helpers.js";
|
|
const { hardline, indent, join } = builders;
|
|
export default {
|
|
literal(path, print) {
|
|
const { TextBlock } = path.node.children;
|
|
if (!TextBlock) {
|
|
return printSingle(path, print);
|
|
}
|
|
const [open, ...lines] = TextBlock[0].image.split("\n");
|
|
const baseIndent = findBaseIndent(lines);
|
|
const textBlock = join(hardline, [
|
|
open,
|
|
...lines.map(line => line.slice(baseIndent))
|
|
]);
|
|
const ancestor = path.getNode(14);
|
|
return (ancestor === null || ancestor === void 0 ? void 0 : ancestor.name) === "variableInitializer" ||
|
|
((ancestor === null || ancestor === void 0 ? void 0 : ancestor.name) === "binaryExpression" &&
|
|
ancestor.children.AssignmentOperator)
|
|
? indent(textBlock)
|
|
: textBlock;
|
|
},
|
|
integerLiteral: printSingle,
|
|
floatingPointLiteral: printSingle,
|
|
booleanLiteral: printSingle,
|
|
shiftOperator(path, print) {
|
|
return map(path, print, onlyDefinedKey(path.node.children));
|
|
}
|
|
};
|