Yuki Takei 8 лет назад
Родитель
Сommit
7896eeb16f
1 измененных файлов с 11 добавлено и 71 удалено
  1. 11 71
      resource/js/util/GrowiRenderer.js

+ 11 - 71
resource/js/util/GrowiRenderer.js

@@ -1,5 +1,4 @@
 import MarkdownIt from 'markdown-it';
-// import hljs from 'highlight.js';
 import * as entities from 'entities';
 
 import Linker        from './PreProcessor/Linker';
@@ -35,7 +34,6 @@ export default class GrowiRenderer {
 
     this.configure = this.configure.bind(this);
     this.parseMarkdown = this.parseMarkdown.bind(this);
-    this.codeRenderer = this.codeRenderer.bind(this);
   }
 
   /**
@@ -47,6 +45,17 @@ export default class GrowiRenderer {
       html: true,
       linkify: true,
       breaks: config.isEnabledLineBreaks,
+      highlight: (str, lang) => {
+        if (lang && hljs.getLanguage(lang)) {
+          try {
+            return '<pre class="hljs"><code>' +
+                    hljs.highlight(lang, str, true).value +
+                    '</code></pre>';
+          } catch (__) {}
+        }
+
+        return '<pre class="hljs"><code>' + this.md.utils.escapeHtml(str) + '</code></pre>';
+      },
     });
   }
 
@@ -87,77 +96,8 @@ export default class GrowiRenderer {
     return html;
   }
 
-  codeRenderer(code, lang, escaped) {
-    let result = '', hl;
-
-    // if (lang) {
-    //   const langAndFn = lang.split(':');
-    //   const langPattern = langAndFn[0];
-    //   const langFn = langAndFn[1] || null;
-    //   if (this.langProcessors[langPattern]) {
-    //     return this.langProcessors[langPattern].process(code, lang);
-    //   }
-
-    //   try {
-    //     hl = hljs.highlight(langPattern, code);
-    //     result = hl.value;
-    //     escaped = true;
-    //   } catch (e) {
-    //     result = code;
-    //   }
-
-    //   result = (escape ? result : entities.encodeHTML(result));
-
-    //   let citeTag = '';
-    //   if (langFn) {
-    //     citeTag = `<cite>${langFn}</cite>`;
-    //   }
-    //   return `<pre class="wiki-code wiki-lang">${citeTag}<code class="lang-${lang}">${result}\n</code></pre>\n`;
-    // }
-
-    // no lang specified
-    return `<pre class="wiki-code"><code>${entities.encodeHTML(code)}\n</code></pre>`;
-
-  }
-
   parseMarkdown(markdown, dom, markedOpts) {
     let parsed = '';
-
-    /*
-    const markedRenderer = new marked.Renderer();
-    markedRenderer.code = this.codeRenderer;
-
-    try {
-      // concat
-      let concatMarkedOpts = Object.assign({
-        gfm: true,
-        tables: true,
-        breaks: true,
-        pedantic: false,
-        sanitize: false,
-        smartLists: true,
-        smartypants: false,
-        renderer: markedRenderer,
-      }, markedOpts);
-
-      marked.setOptions(concatMarkedOpts);
-
-      // override
-      marked.Lexer.lex = function(src, options) {
-        var lexer = new marked.Lexer(options);
-
-        // this is maybe not an official way
-        if (lexer.rules) {
-          lexer.rules.fences = /^ *(`{3,}|~{3,})[ \.]*([^\r\n]+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/;
-        }
-
-        return lexer.lex(src);
-      };
-
-      parsed = marked(markdown);
-    } catch (e) { console.log(e, e.stack); }
-    */
-
     parsed = this.md.render(markdown);
     return parsed;
   }