浏览代码

maint: change md highlight engine to Prism

wangweimin 4 年之前
父节点
当前提交
8cc0090858

文件差异内容过多而无法显示
+ 0 - 0
pywebio/html/css/markdown.min.css


+ 1 - 1
pywebio/html/index.html

@@ -39,7 +39,7 @@
 <script src="codemirror/python.js"></script> <!--codemirror python language support-->
 <script src="codemirror/loadmode.js"></script> <!--codemirror plugin: auto load mode-->
 <script src="codemirror/active-line.js"></script> <!--codemirror plugin: auto load mode-->
-<script src="js/highlight.min.js"></script>  <!-- markdown code highlight -->
+<script src="js/prism.min.js"></script>  <!-- markdown code highlight -->
 <script src="js/FileSaver.min.js"></script>  <!-- saving files on the client-side -->
 <script src="js/jquery.min.js"></script>
 <script src="js/popper.min.js"></script>  <!-- tooltip engine -->

文件差异内容过多而无法显示
+ 0 - 1087
pywebio/html/js/highlight.min.js


文件差异内容过多而无法显示
+ 2 - 0
pywebio/html/js/prism.min.js


+ 1 - 1
setup.py

@@ -50,7 +50,7 @@ setup(
             "html/css/app.css",
             "html/css/codemirror.min.css",
             "html/js/FileSaver.min.js",
-            "html/js/highlight.min.js",
+            "html/js/prism.min.js",
             "html/js/pywebio.min.js",
             "html/js/mustache.min.js",
             "html/js/jquery.min.js",

+ 12 - 9
webiojs/src/models/output.ts

@@ -1,8 +1,6 @@
 import {b64toBlob} from "../utils";
-// const marked = require('marked');
-// import {marked} from "../js/mdparser";
-// import 'marked';
 import * as marked from 'marked';
+
 /*
 * 当前限制
 * 若Widget被作为其他Widget的子项时,该Widget中绑定的事件将会失效
@@ -33,13 +31,18 @@ marked.setOptions({
     smartLists: true,
     smartypants: false,
     mangle: false,
-    highlight: function (code, language) {
-        try{
-            const validLanguage = hljs.getLanguage(language) ? language : 'plaintext';
-            return hljs.highlight(validLanguage, code).value;
-        }catch (e) {
-            return code
+    highlight: function (code, lang, callback) {
+        if (Prism.languages[lang]) {
+            try {
+                code = Prism.highlight(code, Prism.languages[lang]);
+            } catch (e) {
+                console.error('Prism highlight error:' + e)
+            }
         }
+        if (callback)
+            return callback(null, code);
+        else
+            return code;
     },
 });
 

+ 1 - 1
webiojs/src/vendor.d.ts

@@ -4,4 +4,4 @@ declare let saveAs: any;
 declare let CodeMirror: any;
 declare let bsCustomFileInput: any;
 declare let Toastify: any;
-declare let hljs: any;  // highlight.js
+declare let Prism: any;  // Prism.js

部分文件因为文件数量过多而无法显示