Просмотр исходного кода

WIP: render page with react component

refactor GrowiRenderer
Yuki Takei 8 лет назад
Родитель
Сommit
d73a9046e9
2 измененных файлов с 17 добавлено и 31 удалено
  1. 12 7
      resource/js/components/PageEditor.js
  2. 5 24
      resource/js/util/GrowiRenderer.js

+ 12 - 7
resource/js/components/PageEditor.js

@@ -263,18 +263,23 @@ export default class PageEditor extends React.Component {
       currentPagePath: decodeURIComponent(location.pathname)
     };
 
-    this.props.crowi.interceptorManager.process('preRenderPreview', context)
-      .then(() => crowi.interceptorManager.process('prePreProcess', context))
+    const interceptorManager = this.props.crowi.interceptorManager;
+    interceptorManager.process('preRenderPreview', context)
+      .then(() => interceptorManager.process('prePreProcess', context))
       .then(() => {
         context.markdown = crowiRenderer.preProcess(context.markdown);
       })
-      .then(() => crowi.interceptorManager.process('postPreProcess', context))
+      .then(() => interceptorManager.process('postPreProcess', context))
       .then(() => {
-        var parsedHTML = crowiRenderer.render(context.markdown, context.dom);
+        var parsedHTML = crowiRenderer.process(context.markdown);
         context['parsedHTML'] = parsedHTML;
       })
-      .then(() => crowi.interceptorManager.process('postRenderPreview', context))
-      .then(() => crowi.interceptorManager.process('preRenderPreviewHtml', context))
+      .then(() => interceptorManager.process('prePostProcess', context))
+      .then(() => {
+        context.markdown = crowiRenderer.postProcess(context.parsedHTML, context.dom);
+      })
+      .then(() => interceptorManager.process('postPostProcess', context))
+      .then(() => interceptorManager.process('preRenderPreviewHtml', context))
       .then(() => {
         this.setState({ html: context.parsedHTML });
 
@@ -282,7 +287,7 @@ export default class PageEditor extends React.Component {
         $('#form-body').val(this.state.markdown);
       })
       // process interceptors for post rendering
-      .then(() => crowi.interceptorManager.process('postRenderPreviewHtml', context));
+      .then(() => interceptorManager.process('postRenderPreviewHtml', context));
 
   }
 

+ 5 - 24
resource/js/util/GrowiRenderer.js

@@ -45,7 +45,7 @@ export default class GrowiRenderer {
 
     this.configure = this.configure.bind(this);
     this.configurePlugins = this.configurePlugins.bind(this);
-    this.parseMarkdown = this.parseMarkdown.bind(this);
+    this.process = this.process.bind(this);
     this.codeRenderer = this.codeRenderer.bind(this);
 
     this.md = new MarkdownIt();
@@ -86,6 +86,10 @@ export default class GrowiRenderer {
     return markdown;
   }
 
+  process(markdown) {
+    return this.md.render(markdown);
+  }
+
   postProcess(html, dom) {
     for (let i = 0; i < this.postProcessors.length; i++) {
       if (!this.postProcessors[i].process) {
@@ -119,27 +123,4 @@ export default class GrowiRenderer {
     return '';
   }
 
-  parseMarkdown(markdown, dom, markedOpts) {
-    let parsed = '';
-    parsed = this.md.render(markdown);
-    return parsed;
-  }
-
-  /**
-   * render
-   *
-   * @param {string} markdown
-   * @param {Element} dom
-   * @returns
-   *
-   * @memberOf CrowiRenderer
-   */
-  render(markdown, dom) {
-    let html = '';
-
-    html = this.parseMarkdown(markdown, dom);
-    html = this.postProcess(html, dom);
-
-    return html;
-  }
 }