File tree Expand file tree Collapse file tree 2 files changed +55
-24
lines changed Expand file tree Collapse file tree 2 files changed +55
-24
lines changed Original file line number Diff line number Diff line change 1
1
{
2
+ // final parsed output for coderoad.json file
3
+ var position = {
4
+ page: - 1 ,
5
+ };
2
6
var output = {
3
7
info: {
4
-
8
+ title: ' Tutorial Title' ,
9
+ description: ' ' ,
5
10
},
6
11
pages: []
12
+ };
13
+
14
+ function adjust (item ) {
15
+ return item[0 ].concat (item[1 ].join (' ' ));
7
16
}
8
17
}
9
18
10
19
start
11
- = info
20
+ = doc
12
21
{ return output; }
13
22
14
23
doc
15
- = info
16
- page *
24
+ = info_title
25
+ info_description *
26
+ optionalBreak
27
+ page *
17
28
18
29
page
19
30
= page_title
20
- description
31
+ page_description *
21
32
22
33
page_title
23
34
= '##'
24
- space
35
+ optionalSpace
25
36
title : content
26
37
EOL
27
- { return title .join (' ' ); }
38
+ {
39
+ // increment page
40
+ position .page += 1 ;
41
+ // add page outline
42
+ output .pages .push ({
43
+ title: ' Page ' + position .page ,
44
+ description: ' ' ,
45
+ });
46
+ // add page title
47
+ output .pages [position .page ].title = adjust (title);
48
+ }
28
49
29
- info
30
- = title : info_title
31
- description : description
32
- {
33
- // set info
34
- output .info . title = title ;
35
- output .info . description = description
36
- }
50
+ page_description
51
+ = description : content
52
+ EOL
53
+ {
54
+ const d = output . pages [ position . page ]. description ;
55
+ output .pages [ position . page ]. description += d . length > 0 ? ' \n ' : ' ' ;
56
+ output .pages [ position . page ]. description += adjust ( description);
57
+ }
37
58
38
59
info_title
39
60
= '#'
40
- space
61
+ optionalSpace
41
62
title : content
42
- EOL
43
- { return title .join (' ' ); }
63
+ { output .info .title = adjust (title); }
44
64
45
- description
65
+ info_description
46
66
= description : content
47
67
EOL
48
- { return description .join (' ' ); }
68
+ {
69
+ const d = output .info .description ;
70
+ output .info .description += d .length > 0 ? ' \n ' : ' ' ;
71
+ output .info .description += adjust (description);
72
+ }
49
73
50
- content = [0-9A-Za-z ] *
51
- space = [ ]
74
+ content = [^#] [^ \n ^ \r ] + [ \n\r ]
75
+ space = [ \s ]
52
76
EOL = [\n\r ]?
53
77
file_path = [a-z_\-\s 0-9\. ]+
54
78
quote = [\"\'\` ]
55
79
56
- break = space EOL
80
+ optionalBreak = EOL ?
81
+ optionalSpace = space ?
82
+
83
+ {
84
+ // notes
85
+ // - break if line starts with #
86
+ // - break if line starts with @
87
+ }
Original file line number Diff line number Diff line change @@ -32,7 +32,7 @@ some description
32
32
t . deepEqual ( result . info , expected . info ) ;
33
33
} ) ;
34
34
35
- test . skip ( 'parses a multiline description' , t => {
35
+ test ( 'parses a multiline description' , t => {
36
36
const data = `# Title
37
37
some description
38
38
and more on
You can’t perform that action at this time.
0 commit comments