solidity-antlr4
Version:
Solidity Lang Lexer and Parser by official ANTLR4 grammar
53 lines (52 loc) • 2.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.printComment = exports.massageAstNode = exports.isBlockComment = exports.handleComments = exports.canAttachComment = void 0;
var _prettier = require("prettier");
var _base = require("./base.cjs");
const isBlockComment = node => {
return node?.type && _base.blockComments.includes(node.type);
};
exports.isBlockComment = isBlockComment;
const canAttachComment = node => !!node?.type && !_base.comments.includes(node.type);
exports.canAttachComment = canAttachComment;
const printComment = (path, _options) => {
const comment = path.node;
if (!comment.text) return "";
if (comment.text.startsWith("///")) {
const content = comment.text.replace("///", "").trim();
return ["/// ", content];
}
if (comment.text.startsWith("//")) {
const content = comment.text.replace("//", "").trim();
return ["// ", content];
}
const isMultiline = comment.text.includes("\n");
const multiline = isMultiline ? _prettier.doc.builders.hardline : _prettier.doc.builders.line;
if (comment.text.startsWith("/**") && comment.text.endsWith("*/")) {
const lines = comment.text.slice(3, -2).split("\n").map(line => {
const trimmed = line.trim();
if (trimmed.startsWith("*")) {
return trimmed.slice(1).trim();
}
return trimmed;
}).filter(Boolean);
return ["/**", multiline, _prettier.doc.builders.join(multiline, lines.map(line => [" * ", line])), multiline, " */"];
}
if (comment.text.startsWith("/*") && comment.text.endsWith("*/")) {
const lines = comment.text.slice(2, -2).split("\n").map(line => line.trim()).filter(Boolean);
return ["/*", multiline, _prettier.doc.builders.join(multiline, lines), multiline, "*/"];
}
return comment.text;
};
exports.printComment = printComment;
const ignoredProperties = /* @__PURE__ */new Set(["location", "range", "comments"]);
const massageAstNode = () => {};
exports.massageAstNode = massageAstNode;
massageAstNode.ignoredProperties = ignoredProperties;
const handleComments = exports.handleComments = {
// ownLine: (commentNode, text, options, ast, isLastComment) => false,
// endOfLine: (commentNode, text, options, ast, isLastComment) => false,
// remaining: (commentNode, text, options, ast, isLastComment) => false,
};