Kaynağa Gözat

Modify renderer rules

https://youtrack.weseek.co.jp/issue/GW-7856
- Rename class of ListConfigurer
- Add type definition of list object
- Create List object by split list content
- Return default renderer if list content not modified
- Update class import
Mudana-Grune 3 yıl önce
ebeveyn
işleme
0a0b60998d

+ 2 - 2
packages/app/src/services/renderer/growi-renderer.ts

@@ -17,7 +17,7 @@ import HeaderConfigurer from './markdown-it/header';
 import HeaderLineNumberConfigurer from './markdown-it/header-line-number';
 import HeaderLineNumberConfigurer from './markdown-it/header-line-number';
 import HeaderWithEditLinkConfigurer from './markdown-it/header-with-edit-link';
 import HeaderWithEditLinkConfigurer from './markdown-it/header-with-edit-link';
 import LinkerByRelativePathConfigurer from './markdown-it/link-by-relative-path';
 import LinkerByRelativePathConfigurer from './markdown-it/link-by-relative-path';
-import OrderedListConfigurer from './markdown-it/list';
+import ListConfigurer from './markdown-it/list';
 import MathJaxConfigurer from './markdown-it/mathjax';
 import MathJaxConfigurer from './markdown-it/mathjax';
 import PlantUMLConfigurer from './markdown-it/plantuml';
 import PlantUMLConfigurer from './markdown-it/plantuml';
 import TableConfigurer from './markdown-it/table';
 import TableConfigurer from './markdown-it/table';
@@ -103,7 +103,7 @@ export default class GrowiRenderer {
       new DrawioViewerConfigurer(),
       new DrawioViewerConfigurer(),
       new PlantUMLConfigurer(this.growiRendererConfig),
       new PlantUMLConfigurer(this.growiRendererConfig),
       new BlockdiagConfigurer(this.growiRendererConfig),
       new BlockdiagConfigurer(this.growiRendererConfig),
-      new OrderedListConfigurer(),
+      new ListConfigurer(),
     ];
     ];
 
 
     if (this.pagePath != null) {
     if (this.pagePath != null) {

+ 19 - 8
packages/app/src/services/renderer/markdown-it/list.ts

@@ -1,24 +1,35 @@
-export default class OrderedListConfigurer {
+export default class ListConfigurer {
 
 
 
 
   configure(md): void {
   configure(md): void {
 
 
+    type ListOject = {
+      indent: number,
+      content: string,
+      parent: number | null
+    }
 
 
     md.renderer.rules.ordered_list_open = function(tokens, idx, options, env, self) {
     md.renderer.rules.ordered_list_open = function(tokens, idx, options, env, self) {
 
 
       const contents = tokens[idx + 3].content;
       const contents = tokens[idx + 3].content;
+
       const splittedContent = contents.split('\n');
       const splittedContent = contents.split('\n');
-      let newList;
       if (splittedContent.length > 1) {
       if (splittedContent.length > 1) {
-        newList += '<ol>';
+        const contentList: ListOject[] = [];
+        let prevIndent;
         splittedContent.forEach((content) => {
         splittedContent.forEach((content) => {
-          newList += `<li> ${content} </li>`;
+          const indent = content.match(/^\s*/)[0].length;
+          const listObject = {
+            indent,
+            content,
+            parent: indent === 0 ? null : prevIndent,
+          };
+          prevIndent = indent;
+          contentList.push(listObject);
         });
         });
-        newList += '</ol>';
-        return newList;
-      }
 
 
-      return self.renderToken(tokens, idx, options);
+      }
+      return self.renderToken(tokens, idx);
 
 
     };
     };