rsuite-theme
Version:
The suite theme for pagurian
35 lines (30 loc) • 898 B
JavaScript
;
const remark = require("remark");
const findAllAfter = require("unist-util-find-all-after");
module.exports = function (source, opts) {
// Skip known non-markdown files.
if (opts.from && !/\.(?:md|markdown)(?:\?.+)?$/i.test(opts.from)) {
return;
}
let isStructureMD = false;
const ast = remark().parse(source);
const blocks = findAllAfter(ast, 0, (node) => {
if (node.type === "code" && node.lang) {
isStructureMD = true;
return /^(?:(?:[ps]?c)|le|wx|sa?|sugar)ss$/i.test(node.lang);
}
});
if (!isStructureMD) {
return;
}
return blocks.map((block) => {
const startIndex = source.indexOf(block.value, block.position.start.offset);
const content = source.slice(startIndex, block.position.end.offset).replace(/[ \t]*`*$/, "");
return {
startIndex: startIndex,
lang: block.lang.toLowerCase(),
isMarkdown: true,
content: content,
};
});
};