Yuki Takei 8 лет назад
Родитель
Сommit
7a9e68685f
4 измененных файлов с 27 добавлено и 2 удалено
  1. 1 0
      package.json
  2. 17 2
      resource/js/util/GrowiRenderer.js
  3. 5 0
      resource/js/util/PostProcessor/Emoji.js
  4. 4 0
      yarn.lock

+ 1 - 0
package.json

@@ -93,6 +93,7 @@
     "jquery-ui": "^1.12.1",
     "jquery.cookie": "~1.4.1",
     "markdown-it": "^8.4.0",
+    "markdown-it-emoji": "^1.4.0",
     "md5": "^2.2.1",
     "method-override": "^2.3.10",
     "mkdirp": "~0.5.1",

+ 17 - 2
resource/js/util/GrowiRenderer.js

@@ -7,7 +7,7 @@ import Linker        from './PreProcessor/Linker';
 import ImageExpander from './PreProcessor/ImageExpander';
 import XssFilter     from './PreProcessor/XssFilter';
 
-import Emoji         from './PostProcessor/Emoji';
+import emoji         from 'markdown-it-emoji';
 import Mathjax       from './PostProcessor/Mathjax';
 
 import Tsv2Table from './LangProcessor/Tsv2Table';
@@ -22,6 +22,7 @@ export default class GrowiRenderer {
 
     this.md = new MarkdownIt();
     this.configure(this.crowi.getConfig());
+    this.configurePlugins(this.crowi.getConfig());
 
     this.preProcessors = [
       new Linker(crowi),
@@ -29,7 +30,6 @@ export default class GrowiRenderer {
       new XssFilter(crowi),
     ];
     this.postProcessors = [
-      new Emoji(crowi),
       new Mathjax(crowi),
     ];
 
@@ -57,6 +57,21 @@ export default class GrowiRenderer {
     });
   }
 
+  /**
+   * configure markdown-it plugins
+   * @param {any} config
+   */
+  configurePlugins(config) {
+    this.md
+        .use(emoji);
+
+    // integrate markdown-it-emoji and emojione
+    this.md.renderer.rules.emoji = (token, idx) => {
+      const shortname = `:${token[idx].markup}:`;
+      return emojione.shortnameToImage(shortname);
+    };
+  }
+
   preProcess(markdown, dom) {
     for (let i = 0; i < this.preProcessors.length; i++) {
       if (!this.preProcessors[i].process) {

+ 5 - 0
resource/js/util/PostProcessor/Emoji.js

@@ -1,6 +1,11 @@
+/**
+ * DEPRECATED
+ * replaced by markdown-it-emoji -- 2018.01.30 Yuki Takei
+ *
 export default class Emoji {
 
   process(markdown) {
     return emojione.shortnameToImage(markdown);
   }
 }
+*/

+ 4 - 0
yarn.lock

@@ -3667,6 +3667,10 @@ map-values@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/map-values/-/map-values-1.0.1.tgz#768b8e79c009bf2b64fee806e22a7b1c4190c990"
 
+markdown-it-emoji@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz#9bee0e9a990a963ba96df6980c4fddb05dfb4dcc"
+
 markdown-it@^8.4.0:
   version "8.4.0"
   resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.0.tgz#e2400881bf171f7018ed1bd9da441dac8af6306d"