index.ts 1.1 KB

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