Răsfoiți Sursa

implement plugin.js

* using factory function
* add PreProcessors from app.js
Yuki Takei 9 ani în urmă
părinte
comite
c4b509aa0f
3 a modificat fișierele cu 39 adăugiri și 10 ștergeri
  1. 33 4
      plugin/plugin.js
  2. 6 0
      resource/js/app.js
  3. 0 6
      resource/js/util/CrowiRenderer.js

+ 33 - 4
plugin/plugin.js

@@ -1,10 +1,39 @@
+const plugins = [
+  // require('crowi-plugin-...')
+]
+
+// import all plugins
+var pluginMetaDatas = [];
+plugins.forEach((plugin) => {
+  pluginMetaDatas.push(plugin.meta);
+})
+
 export default class CrowiPlugin {
 
-  constructor() {
-  }
+  /**
+   * plug-in PreProcessors
+   * 
+   * @param {Crowi} crowi
+   * @param {CrowiRenderer} crowiRenderer
+   * 
+   * @memberof CrowiPlugin
+   */
+  pluginPreProcessors(crowi, crowiRenderer) {
+    var additionalPreProcessors = [];
+
+    pluginMetaDatas.forEach((meta) => {
+      // v1
+      if (meta.pluginSchemaVersion === 1) {
+        meta.preProcessorFactories.forEach((f) => {
+          // instanciate PreProcessor
+          var preProcessor = f(crowi);
+          additionalPreProcessors.push(preProcessor);
+        })
+      }
+    });
 
-  getAllPreProcessors() {
-    return []
+    crowiRenderer.preProcessors = crowiRenderer.preProcessors.concat(
+        crowiRenderer.preProcessors, additionalPreProcessors);
   }
 
 }

+ 6 - 0
resource/js/app.js

@@ -21,6 +21,12 @@ crowi.fetchUsers();
 const crowiRenderer = new CrowiRenderer();
 window.crowiRenderer = crowiRenderer;
 
+var isEnablePlugin = true;  // TODO configurable
+if (isEnablePlugin) {
+  var crowiPlugin = window.crowiPlugin;   // FIXME
+  crowiPlugin.pluginPreProcessors(crowi, crowiRenderer);
+}
+  
 const componentMappings = {
   'search-top': <HeaderSearchBox />,
   'search-page': <SearchPage />,

+ 0 - 6
resource/js/util/CrowiRenderer.js

@@ -21,12 +21,6 @@ export default class CrowiRenderer {
       new Emoji(),
     ];
 
-    var isEnablePlugin = true;  // TODO configurable
-    if (isEnablePlugin) {
-      var crowiPlugin = window.crowiPlugin;
-      this.preProcessors = this.preProcessors.concat(crowiPlugin.getAllPreProcessors());
-    }
-
     this.langProcessors = {
       'tsv': new Tsv2Table(),
       'tsv-h': new Tsv2Table({header: true}),