eleventy-plugin-syntaxhighl.../.eleventy.js

74 lines
2.3 KiB
JavaScript

const pkg = require("./package.json");
const hasTemplateFormat = require("./src/hasTemplateFormat");
const HighlightPairedShortcode = require("./src/HighlightPairedShortcode");
const LiquidHighlightTag = require("./src/LiquidHighlightTag");
// const CharacterWrap = require("./src/CharacterWrap");
const markdownChroma = require("./src/markdownSyntaxHighlightOptions");
module.exports = {
configFunction: function (eleventyConfig, options = {}) {
try {
eleventyConfig.versionCheck(pkg["11ty"].compatibility);
} catch (e) {
console.log(
`WARN: Eleventy Plugin (${pkg.name}) Compatibility: ${e.message}`
);
}
options = Object.assign(
{
theme: "monokai",
// lineNumbers: false,
// highlightStyle: "bg:#293", /* any valid css */
/* lineNumbersStyle: "table",*/ /* "table" or "inline" */
preAttributes: {},
codeAttributes: {},
},
options
);
if (hasTemplateFormat(options.templateFormats, "liquid")) {
eleventyConfig.addLiquidTag("highlight", (liquidEngine) => {
// {% highlight js 0,2 %}
let highlight = new LiquidHighlightTag(liquidEngine);
return highlight.getObject(options);
});
}
if (hasTemplateFormat(options.templateFormats, "njk")) {
eleventyConfig.addPairedNunjucksShortcode(
"highlight",
(content, args) => {
// {% highlight "js 0,2-3" %}
return HighlightPairedShortcode(content, args, options);
}
);
}
if (hasTemplateFormat(options.templateFormats, "md")) {
// ```js/0,2-3
eleventyConfig.addMarkdownHighlighter(markdownChroma(options));
}
// if (hasTemplateFormat(options.templateFormats, "11ty.js")) {
// eleventyConfig.addJavaScriptFunction(
// "highlight",
// (language, content, highlight1, highlight2) => {
// let highlightLines = [highlight1, highlight2]
// .filter((entry) => entry)
// .join(" ");
// let result = HighlightPairedShortcode(
// content,
// args,
// options
// );
// return result;
// }
// );
// }
},
};
module.exports.pairedShortcode = HighlightPairedShortcode;
// module.exports.CharacterWrap = CharacterWrap;