فهرست منبع

hljs fix
[add] code tagName

B Thibault 8 سال پیش
والد
کامیت
788cf063ca
1فایلهای تغییر یافته به همراه15 افزوده شده و 15 حذف شده
  1. 15 15
      msgFormatter.js

+ 15 - 15
msgFormatter.js

@@ -398,23 +398,22 @@ var formatText = (function() {
             return formatted ? formatted : this.text;
         }
         if (this._parent.checkIsCodeBlock()) {
-            if (typeof hljs !== undefined) {
-                var text = this.text,
-                    language,
-                    availableLanguages = hljs.listLanguages();
-
-                for (var i =0, nbLang = availableLanguages.length; i < nbLang; i++) {
-                    var l = availableLanguages[i];
-                    if (text.substr(0, l.length) === l && isAlphadec(text[l.length])) {
-                        language = l;
-                        text = text.substr(l.length);
-                        break;
-                    }
+            if (typeof hljs !== "undefined") {
+                try {
+                    var lang = this.text.match(/^\w+/);
+
+                    hljs.configure({
+                        "useBR": true,
+                        "tabReplace": "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",
+                    });
+                    if (lang && hljs.getLanguage(lang[0]))
+                        return hljs.fixMarkup(hljs.highlight(lang[0], this.text.substr(lang[0].length)).value);
+                    return hljs.fixMarkup(hljs.highlightAuto(this.text).value);
+                } catch (e) {
+                    console.error(e);
                 }
-                return hljs.highlight(language, text).value;
-            } else {
-                return this.text.replace(/\n/g, '<br/>'); // TODO syntax highlight https://github.com/isagalaev/highlight.js
             }
+            return this.text.replace(/\n/g, '<br/>');
         }
         return opts.textFilter(this.text);
     };
@@ -429,6 +428,7 @@ var formatText = (function() {
             ,params = '';
 
         if (this._parent.checkIsCodeBlock()) {
+            tagName = "pre";
             classList.push('codeblock');
             innerHTML = this.innerHTML();
         } else if (this._parent.checkIsCode()) {