123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- const hljs = require("highlight.js");
- const MAP = {
- py: "python",
- js: "javascript",
- json: "javascript",
- rb: "ruby",
- csharp: "cs"
- };
- function normalize(lang) {
- if (!lang) {
- return null;
- }
- const lower = lang.toLowerCase();
- return MAP[lower] || lower;
- }
- /**
- * @param {string} lang
- * @param {string} code
- * @returns {string|{html: boolean, body}}
- */
- function highlight(lang, code) {
- if (!lang)
- return {
- body: code,
- html: false
- };
- // Normalize lang
- lang = normalize(lang);
- try {
- return hljs.highlight(code, {
- language: lang
- }).value;
- } catch (e) {
- console.error(e);
- }
- return {
- body: code,
- html: false
- };
- }
- module.exports = {
- book: {
- assets: "./css",
- css: ["website.css"]
- },
- ebook: {
- assets: "./css",
- css: ["ebook.css"]
- },
- blocks: {
- code: function (block) {
- return highlight(block.kwargs.language, block.body);
- }
- }
- };
|