11import * as remark from 'remark' ;
2+ import { parseMarkdownToHeader } from './BlockTypeParsers/header-type-parser' ;
3+ import { parseMarkdownToParagraph } from './BlockTypeParsers/paragraph-type-parser' ;
4+ import { parseMarkdownToList } from './BlockTypeParsers/list-type-parser' ;
5+ import { parseMarkdownToDelimiter } from './BlockTypeParsers/delimiter-type-parser' ;
6+
7+ export const editorData = [ ] ;
28
39export default class ImportMarkdown {
410 constructor ( { data, api } ) {
@@ -21,8 +27,6 @@ export default class ImportMarkdown {
2127 doc . setAttribute ( 'name' , 'files[]' ) ;
2228 doc . setAttribute ( 'onload' , this . parseMarkdown ( ) ) ;
2329
24- // TODO: return import method
25-
2630 return doc ;
2731 }
2832
@@ -32,6 +36,11 @@ export default class ImportMarkdown {
3236 const data = await this . api . saver . save ( ) ;
3337 a . content = data . blocks ;
3438
39+ //let b = [];
40+ console . log ( 'EditorJs content' ) ;
41+ console . log ( a . content ) ;
42+ console . log ( '--------------------' ) ;
43+
3544 const fileUpload = document . getElementById ( 'file-upload' ) ;
3645
3746 fileUpload . onchange = ( e ) => {
@@ -42,11 +51,41 @@ export default class ImportMarkdown {
4251
4352 reader . onload = ( readerEvent ) => {
4453 const content = readerEvent . target . result ;
45- console . log ( content ) ;
4654 console . log ( remark ( ) . parse ( content ) ) ;
55+ // TODO: implement switch case block for parsing
56+ // markdown to json (editorjs)
57+ const parsedMarkdown = remark ( ) . parse ( content ) ;
58+
59+ parsedMarkdown . children . forEach ( ( item , index ) => {
60+ //console.log(item.children.forEach((item) => console.log(item)));
61+ switch ( item . type ) {
62+ case 'heading' :
63+ return editorData . push ( parseMarkdownToHeader ( item ) ) ;
64+ case 'paragraph' :
65+ return editorData . push ( parseMarkdownToParagraph ( item ) ) ;
66+ case 'list' :
67+ return editorData . push ( parseMarkdownToList ( item ) ) ;
68+ case 'thematicBreak' :
69+ return editorData . push ( parseMarkdownToDelimiter ( ) ) ;
70+ default :
71+ break ;
72+ }
73+ } ) ;
74+ // filter through array and remove empty objects
75+ console . log ( editorData . filter ( ( value ) => Object . keys ( value ) . length !== 0 ) ) ;
76+
77+ // TODO rerender editor with new parsed Data
78+ // this.api.blocks.clear();
79+ // this.api.blocks.render({
80+ // time: 1550476186479,
81+ // blocks: [editorData],
82+ // version: '2.18.0',
83+ // });
84+
4785 return remark ( ) . parse ( content ) ;
4886 } ;
4987 } ;
88+
5089 fileUpload . click ( ) ;
5190 }
5291
0 commit comments