1
1
const fs = require ( 'fs' ) ;
2
2
const { join, sep } = require ( 'path' ) ;
3
-
4
- function parseMarkdownToObject ( markdownString ) {
5
- const markDown = markdownString . match ( / - - - ( .* ( \r ) ? \n ) * - - - / g) ;
6
- const metadata = markDown [ 0 ] ;
7
-
8
- const details = metadata . match ( / ( .* ) : ( .* ) / g) . reduce ( ( obj , detail ) => {
9
- const value = detail . substr ( detail . indexOf ( ':' ) + 2 ) ;
10
- const key = detail . substr ( 0 , detail . indexOf ( ':' ) ) ;
11
- obj [ key ] = value ;
12
- return obj ;
13
- } , { } ) ;
14
-
15
- return details ;
16
- }
3
+ const parseMD = require ( 'parse-md' ) . default ;
17
4
18
5
function getExtensionFromFilename ( fileName ) {
19
6
return fileName . substr ( fileName . lastIndexOf ( '.' ) + 1 ) ;
@@ -25,7 +12,8 @@ function getDetails(format, data) {
25
12
switch ( formatNormalised ) {
26
13
case 'md' :
27
14
case 'markdown' : {
28
- return parseMarkdownToObject ( data ) ;
15
+ const { metadata } = parseMD ( data ) ;
16
+ return metadata ;
29
17
}
30
18
31
19
case 'json' : {
@@ -39,7 +27,8 @@ function getDetails(format, data) {
39
27
}
40
28
41
29
function getPreview ( data ) {
42
- let preview = data . replace ( / - - - ( .* ( \r ) ? \n ) * - - - / , '' ) . replace ( / \[ .* \] \( .* \) / g, '' ) . replace ( / ( \r ) ? \n / , '' ) ;
30
+ const { content } = parseMD ( data ) ;
31
+ let preview = content . replace ( / - - - ( .* ( \r ) ? \n ) * - - - / , '' ) . replace ( / \[ .* \] \( .* \) / g, '' ) . replace ( / ( \r ) ? \n / , '' ) ;
43
32
preview = preview . substr ( 0 , ( preview . indexOf ( '\n' ) - 1 ) ) ;
44
33
return preview . length < 500 ? preview : preview . substr ( 0 , 500 ) ;
45
34
}
@@ -55,7 +44,8 @@ function getFolders(source) {
55
44
const id = file . substr ( file . lastIndexOf ( sep ) + 1 ) ;
56
45
const format = getExtensionFromFilename ( id ) ;
57
46
return {
58
- id : id ,
47
+ id,
48
+ format,
59
49
path : file ,
60
50
details : getDetails ( format , data ) ,
61
51
preview : getPreview ( data )
0 commit comments