Вход Регистрация
Файл: 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 (codeansi) {
  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");
  }
};
?>
Онлайн: 1
Реклама