Файл: error-kitty/lib/error-kitty/highlight.js
Строк: 83
<?php
var highlight = require("highlight.js");
var cheerio = require("cheerio");
var chalk = require("chalk");
var _ = require("lodash");
module.exports = function (code, ansi) {
var highlighted = highlight.highlight("javascript", code);
code = highlighted.value;
var formatter = formatters[ansi ? "ansi" : "html"];
return formatter(cheerio.load(code));
};
var formatters = {
html: function ($) {
$("span").each(function () {
var className = $(this).attr("class");
var html = $(this).html();
var nodes = [];
_.each(html.split("n"), function (line) {
var node = $("<span>");
node.attr("class", className);
node.html(line);
nodes.push(node);
});
$(this).replaceWith(nodes.join("n"));
});
return $.html();
},
ansi: function ($) {
$("span").each(function () {
var self = $(this);
var html = [];
var start = '<span class="' + self.attr("class") + '">';
var end = "</span>";
_.each(self.html().split("n"), function (text) {
html.push(start + text + end);
});
self.replaceWith(html.join("n"));
});
$("span").each(function () {
var self = $(this);
var format = function (name) {
self.html(chalk[name](self.html()));
};
_.each((self.attr("class") || "").split(" "), function (name) {
var style = {
"hljs-regexp": "green",
"hljs-string": "green",
"hljs-keyword": "bold",
"hljs-title": "red",
"hljs-params": "italic",
"hljs-comment": "grey",
"hljs-number": "yellow",
"hljs-literal": "yellow",
}[name];
if (style) return format(style);
});
});
var removeSpans = function () {
var spans = $("span");
if (!spans.length) return;
spans.each(function () {
$(this).replaceWith($(this).html());
});
removeSpans();
};
removeSpans();
var code = _.unescape($.html());
return code.split("n").map(function (line) {
return line + chalk.reset();
}).join("n");
}
};
?>