eslint-plugin-comment-length
Version:
An ESLint plugin that provides rules that limit the line length of your comments
48 lines (42 loc) • 1.34 kB
text/typescript
import type { TSESTree } from "@typescript-eslint/utils";
import type { RuleContext } from "@typescript-eslint/utils/ts-eslint";
import { MessageIds } from "../../const.message-ids.js";
import type { Context } from "../../typings.context.js";
import { fixOverflowingBlock } from "./fix.overflow.js";
import { type MultilineBlock } from "./typings.block.js";
import { canBlockBeCompated } from "./util.can-block-be-compacted.js";
export function reportCompactableBlocks(
ruleContext: RuleContext<string, unknown[]>,
baseComment: TSESTree.BlockComment,
context: Context,
blocks: MultilineBlock[],
) {
if (context.mode !== "compact") {
return;
}
for (const block of blocks) {
if (!canBlockBeCompated(block, context)) {
continue;
}
ruleContext.report({
loc: {
start: {
column: 0,
line: baseComment.loc.start.line + block.startIndex,
},
end: {
column:
baseComment.loc.start.column +
context.boilerplateSize +
(block.lines.at(-1)?.length ?? 0),
line: baseComment.loc.start.line + block.endIndex,
},
},
messageId: MessageIds.CAN_COMPACT,
data: {
maxLength: context.maxLength,
},
fix: (fixer) => fixOverflowingBlock(fixer, block, context),
});
}
}