UNPKG

hikaru-coffee

Version:

A static site generator that generates routes based on directories naturally.

91 lines (81 loc) 2.55 kB
// Generated by CoffeeScript 2.3.1 (function() { var Promise, aliases, escapeHTML, highlight, highlightAuto, hljs, loadLangAliases; hljs = require("highlight.js"); ({escapeHTML} = require("./utils")); Promise = require("bluebird"); aliases = null; loadLangAliases = function() { var alias, j, k, lAliases, lang, len, len1, ref; aliases = { "plain": "plain" }; ref = hljs.listLanguages(); for (j = 0, len = ref.length; j < len; j++) { lang = ref[j]; aliases[lang] = lang; lAliases = require(`highlight.js/lib/languages/${lang}`)(hljs)["aliases"]; if (lAliases != null) { for (k = 0, len1 = lAliases.length; k < len1; k++) { alias = lAliases[k]; aliases[alias] = lang; } } } return aliases; }; highlightAuto = function(str) { var alias, data, j, lang, len; for (lang = j = 0, len = aliases.length; j < len; lang = ++j) { alias = aliases[lang]; if (hljs.getLanguage(lang) == null) { hljs.registerLanguage(lang, require(`highlight.js/lib/languages/${lang}`)); } } data = hljs.highlightAuto(str); if (data["relevance"] > 0 && data["language"]) { return data; } return { "value": escapeHTML(str), "language": "plain" }; }; highlight = function(str, options = {}) { var data, gutters, i, j, lines, ref, results; if (aliases == null) { aliases = loadLangAliases(); } if (options["hljs"]) { hljs.configure({ "classPrefix": "hljs-" }); } options["lang"] = aliases[options["lang"]]; if (options["lang"] == null) { data = highlightAuto(str); } else if (options["lang"] === "plain") { data = { "value": escapeHTML(str), "language": "plain" }; } else { data = hljs.highlight(options["lang"], str); } results = [`<figure class="highlight hljs ${data["language"].toLowerCase()}">`]; if (options["gutter"]) { gutters = ["<pre class=\"gutter\">"]; lines = data["value"].split("\n").length; for (i = j = 0, ref = lines; (0 <= ref ? j < ref : j > ref); i = 0 <= ref ? ++j : --j) { gutters.push(`<span class="line">${i + 1}</span>\n`); } gutters.push("</pre>"); results = results.concat(gutters); } results.push("<pre class=\"code\"><code>"); results.push(data["value"]); results.push("</code></pre></figure>"); return results.join(""); }; module.exports = highlight; }).call(this);