39 lines
1008 B
TypeScript
39 lines
1008 B
TypeScript
import TurndownService from "turndown";
|
|
import { inHtmlContext } from "./utils";
|
|
|
|
/**
|
|
* A turndown plugin for removing incompatible nodes from lists.
|
|
*
|
|
* @param turndownService The TurndownService instance.
|
|
*/
|
|
export default function sanitizeLists(turndownService: TurndownService) {
|
|
turndownService.addRule("headingsInLists", {
|
|
filter(node) {
|
|
return (
|
|
["H1", "H2", "H3", "H4", "H5", "H6"].includes(node.nodeName) &&
|
|
inHtmlContext(node, "LI")
|
|
);
|
|
},
|
|
replacement(content, node, options) {
|
|
if (!content.trim()) {
|
|
return "";
|
|
}
|
|
return options.strongDelimiter + content + options.strongDelimiter;
|
|
},
|
|
});
|
|
|
|
turndownService.addRule("strongInHeadings", {
|
|
filter(node) {
|
|
return (
|
|
(node.nodeName === "STRONG" || node.nodeName === "B") &&
|
|
["H1", "H2", "H3", "H4", "H5", "H6"].some((tag) =>
|
|
inHtmlContext(node, tag)
|
|
)
|
|
);
|
|
},
|
|
replacement(content) {
|
|
return content;
|
|
},
|
|
});
|
|
}
|