1
1
const fs = require ( 'fs' ) ;
2
2
const { join, sep } = require ( 'path' ) ;
3
3
4
- function getDetails ( data ) {
5
- const matadata = data . match ( / - - - ( .* ( \r ) ? \n ) * - - - / g) [ 0 ] ;
6
- const details = matadata . match ( / ( .* ) : ( .* ) / g) . reduce ( ( obj , detail ) => {
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 ) => {
7
9
const value = detail . substr ( detail . indexOf ( ':' ) + 2 ) ;
8
10
const key = detail . substr ( 0 , detail . indexOf ( ':' ) ) ;
9
11
obj [ key ] = value ;
10
12
return obj ;
11
13
} , { } ) ;
14
+
12
15
return details ;
13
16
}
14
17
18
+ function getExtensionFromFilename ( fileName ) {
19
+ return fileName . substr ( fileName . lastIndexOf ( '.' ) + 1 ) ;
20
+ }
21
+
22
+ function getDetails ( format , data ) {
23
+ const formatNormalised = format . toLowerCase ( ) ;
24
+
25
+ switch ( formatNormalised ) {
26
+ case 'md' : {
27
+ return parseMarkdownToObject ( data ) ;
28
+ }
29
+
30
+ case 'json' : {
31
+ return JSON . parse ( data ) ;
32
+ }
33
+
34
+ default : {
35
+ console . error ( 'File format not recognised' ) ;
36
+ }
37
+ }
38
+ }
39
+
15
40
function getPreview ( data ) {
16
41
let preview = data . replace ( / - - - ( .* ( \r ) ? \n ) * - - - / , '' ) . replace ( / \[ .* \] \( .* \) / g, '' ) . replace ( / ( \r ) ? \n / , '' ) ;
17
42
preview = preview . substr ( 0 , ( preview . indexOf ( '\n' ) - 1 ) ) ;
@@ -26,11 +51,12 @@ function getFolders(source) {
26
51
let allContent = getAllListings ( source ) ;
27
52
const edges = allContent . filter ( isFile ) . map ( file => {
28
53
const data = fs . readFileSync ( file , 'utf-8' ) ;
29
- // console.log('get folders', JSON.stringify(data))
54
+ const id = file . substr ( file . lastIndexOf ( sep ) + 1 ) ;
55
+ const format = getExtensionFromFilename ( id ) ;
30
56
return {
31
57
id : file . substr ( file . lastIndexOf ( sep ) + 1 ) ,
32
58
path : file ,
33
- details : getDetails ( data ) ,
59
+ details : getDetails ( format , data ) ,
34
60
preview : getPreview ( data )
35
61
} ;
36
62
} ) ;
@@ -53,4 +79,4 @@ function generateFileList(src) {
53
79
54
80
module . exports = {
55
81
generateFileList
56
- } ;
82
+ } ;
0 commit comments