index.js 1.1 KB

1234567891011121314151617181920212223242526
  1. var showdown = require('showdown');
  2. var hljs = require('highlightjs');
  3. var decodeHtml = require("html-encoder-decoder").decode;
  4. function showdownHighlight() {
  5. return [{
  6. type: "output",
  7. filter: function filter(text, converter, options) {
  8. var left = "<pre><code\\b[^>]*>", right = "</code></pre>", flags = "g", replacement = function replacement(wholeMatch, match, left, right) {
  9. match = decodeHtml(match);
  10. var lang = (left.match(/class=\"([^ \"]+)/) || [])[1];
  11. console.log(left + hljs.highlight(lang, match).value + right);
  12. if (lang) {
  13. return left + hljs.highlight(lang, match).value + right;
  14. }
  15. else {
  16. return left + hljs.highlightAuto(match).value + right;
  17. }
  18. };
  19. return showdown.helper.replaceRecursiveRegExp(text, replacement, left, right, flags);
  20. }
  21. }];
  22. }
  23. ;
  24. export var convertor = new showdown.Converter({
  25. extensions: [showdownHighlight]
  26. });