@alauda/doom
Version:
Doctor Doom making docs.
18 lines (17 loc) • 814 B
JavaScript
import { lintRule } from 'unified-lint-rule';
import { visitParents } from 'unist-util-visit-parents';
export const listTableIntroduction = lintRule('doom-lint:list-table-introduction', (root, vfile) => {
visitParents(root, ['list', 'table'], (node_, parents) => {
const node = node_;
const parent = parents[parents.length - 1];
const index = parent.children.indexOf(node);
const prevSibling = parent.children[index - 1];
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (!prevSibling || prevSibling.type === 'heading') {
vfile.message(`There should be some introductory text before ${node.type}s`, {
ancestors: [...parents, node],
place: node.position,
});
}
});
});