remark-wikirefs
Version:
A `remark` plugin for wikirefs (including [[wikilinks]]).
116 lines (103 loc) • 4.28 kB
JavaScript
// remark-wikirefs v0.0.6-rm - https://github.com/wikibonsai/remark-wikirefs.git
import { syntaxWikiRefs, syntaxWikiAttrs, syntaxWikiLinks, syntaxWikiEmbeds } from 'micromark-extension-wikirefs';
import { fromMarkdownWikiRefs, toMarkdownWikiRefs, initWikiAttrBox, fromMarkdownWikiAttrs, toMarkdownWikiAttrs, fromMarkdownWikiLinks, toMarkdownWikiLinks, fromMarkdownWikiEmbeds, toMarkdownWikiEmbeds } from 'mdast-util-wikirefs';
var warningIssued = false;
function remarkV13Warning(context) {
if (!warningIssued && (context.Parser && context.Parser.prototype && context.Parser.prototype.blockTokenizers || context.Compiler && context.Compiler.prototype && context.Compiler.prototype.visitors)) {
warningIssued = true;
console.warn('[remark-wikirefs] Warning: please upgrade to remark 13 to use this plugin');
}
return warningIssued;
}
// todo: 'remark-parse` v10+
function remarkWikiRefs(opts) {
var _opts$attrs$render, _opts$attrs;
var doRenderAttrBox = (_opts$attrs$render = opts === null || opts === void 0 ? void 0 : (_opts$attrs = opts.attrs) === null || _opts$attrs === void 0 ? void 0 : _opts$attrs.render) !== null && _opts$attrs$render !== void 0 ? _opts$attrs$render : true;
var data = this.data();
// warn for earlier versions
remarkV13Warning(this);
add('micromarkExtensions', syntaxWikiRefs(opts));
add('fromMarkdownExtensions', fromMarkdownWikiRefs(opts));
add('toMarkdownExtensions', toMarkdownWikiRefs(opts));
function add(field, value) {
if (data[field]) {
data[field].push(value);
} else {
data[field] = [value];
}
}
// (for wikiattrs)
// ref: https://github.com/remarkjs/remark-toc/blob/main/lib/index.js#L36
return function (tree) {
if (doRenderAttrBox) {
var attrbox = initWikiAttrBox(tree, opts);
// place attrbox at the beginning of the tree content
// @ts-expect-error: placing AttrBoxNode where Node type expected
if (attrbox !== undefined) {
tree.children.unshift(attrbox);
}
// todo: test to ensure no existence of caml tokens either...?
}
};
}
function remarkWikiAttrs(opts) {
var _opts$attrs$render2, _opts$attrs2;
var doRenderAttrBox = (_opts$attrs$render2 = opts === null || opts === void 0 ? void 0 : (_opts$attrs2 = opts.attrs) === null || _opts$attrs2 === void 0 ? void 0 : _opts$attrs2.render) !== null && _opts$attrs$render2 !== void 0 ? _opts$attrs$render2 : true;
var data = this.data();
// warn for earlier versions
remarkV13Warning(this);
add('micromarkExtensions', syntaxWikiAttrs(opts));
add('fromMarkdownExtensions', fromMarkdownWikiAttrs(opts));
add('toMarkdownExtensions', toMarkdownWikiAttrs(opts));
function add(field, value) {
if (data[field]) {
data[field].push(value);
} else {
data[field] = [value];
}
}
// ref: https://github.com/remarkjs/remark-toc/blob/main/lib/index.js#L36
return function (tree) {
if (doRenderAttrBox) {
var attrbox = initWikiAttrBox(tree, opts);
// place attrbox at the beginning of the tree content
// @ts-expect-error: placing AttrBoxNode where Node type expected
if (attrbox !== undefined) {
tree.children.unshift(attrbox);
}
// todo: test to ensure no existence of caml tokens either...?
}
};
}
function remarkWikiLinks(opts) {
var data = this.data();
// warn for earlier versions
remarkV13Warning(this);
add('micromarkExtensions', syntaxWikiLinks(opts));
add('fromMarkdownExtensions', fromMarkdownWikiLinks(opts));
add('toMarkdownExtensions', toMarkdownWikiLinks(opts));
function add(field, value) {
if (data[field]) {
data[field].push(value);
} else {
data[field] = [value];
}
}
}
function remarkWikiEmbeds(opts) {
var data = this.data();
// warn for earlier versions
remarkV13Warning(this);
add('micromarkExtensions', syntaxWikiEmbeds(opts));
add('fromMarkdownExtensions', fromMarkdownWikiEmbeds(opts));
add('toMarkdownExtensions', toMarkdownWikiEmbeds(opts));
function add(field, value) {
if (data[field]) {
data[field].push(value);
} else {
data[field] = [value];
}
}
}
export { remarkWikiAttrs, remarkWikiEmbeds, remarkWikiLinks, remarkWikiRefs };
//# sourceMappingURL=index.js.map