41 lines
1.5 KiB
JavaScript
41 lines
1.5 KiB
JavaScript
import { canAttachComment, handleLineComment, handleRemainingComment, isFullyBetweenFormatterOffOn } from "./comments.js";
|
|
import { isNonTerminal, isTerminal, printComment } from "./printers/helpers.js";
|
|
import { printerForNodeType } from "./printers/index.js";
|
|
export default {
|
|
print(path, options, print, args) {
|
|
return hasTerminal(path)
|
|
? path.node.image
|
|
: printerForNodeType(path.node.name)(path, print, options, args);
|
|
},
|
|
hasPrettierIgnore(path) {
|
|
var _a;
|
|
const { node } = path;
|
|
return (((_a = node.comments) === null || _a === void 0 ? void 0 : _a.some(({ image }) => /^(\/\/\s*prettier-ignore|\/\*\s*prettier-ignore\s*\*\/)$/.test(image))) === true ||
|
|
(canAttachComment(node) && isFullyBetweenFormatterOffOn(path)));
|
|
},
|
|
canAttachComment,
|
|
isBlockComment(node) {
|
|
return isTerminal(node) && node.tokenType.name === "TraditionalComment";
|
|
},
|
|
printComment(commentPath) {
|
|
const { node } = commentPath;
|
|
if (isNonTerminal(node) || node.tokenType.GROUP !== "comments") {
|
|
throw new Error(`Not a comment: ${JSON.stringify(node)}`);
|
|
}
|
|
return printComment(node);
|
|
},
|
|
getCommentChildNodes(node) {
|
|
return isNonTerminal(node)
|
|
? Object.values(node.children).flatMap(child => child)
|
|
: [];
|
|
},
|
|
handleComments: {
|
|
ownLine: handleLineComment,
|
|
endOfLine: handleLineComment,
|
|
remaining: handleRemainingComment
|
|
}
|
|
};
|
|
function hasTerminal(path) {
|
|
return isTerminal(path.node);
|
|
}
|