File tree Expand file tree Collapse file tree 4 files changed +114
-0
lines changed Expand file tree Collapse file tree 4 files changed +114
-0
lines changed Original file line number Diff line number Diff line change
1
+ node_modules
Original file line number Diff line number Diff line change
1
+ {
2
+ "name" : " coderoad-parser" ,
3
+ "version" : " 0.1.0" ,
4
+ "description" : " " ,
5
+ "keywords" : [],
6
+ "license" : " ISC" ,
7
+ "author" : " Shawn McKay <shawn.j.mckay@gmail.com>" ,
8
+ "main" : " parser/index.pegjs" ,
9
+ "scripts" : {
10
+ "test" : " ava"
11
+ },
12
+ "dependencies" : {
13
+ "pegjs" : " ^0.9.0"
14
+ },
15
+ "devDependencies" : {
16
+ "ava" : " ^0.16.0"
17
+ }
18
+ }
Original file line number Diff line number Diff line change
1
+ {
2
+ var output = {
3
+ info: {
4
+
5
+ },
6
+ pages: []
7
+ }
8
+ }
9
+
10
+ start
11
+ = doc
12
+ { return output; }
13
+
14
+ doc
15
+ = info
16
+
17
+ page
18
+ = title : page_title
19
+ description : description
20
+ {
21
+ // set page
22
+ output .pages .push ({
23
+ title: title,
24
+ description: description
25
+ });
26
+ }
27
+
28
+ page_title
29
+ = '##'
30
+ space
31
+ title : content
32
+ { return title .join (' ' ); }
33
+
34
+ info
35
+ = title : info_title
36
+ end
37
+ description : description
38
+ end
39
+ {
40
+ // set info
41
+ output .info .title = title;
42
+ output .info .description = description;
43
+ }
44
+
45
+ info_title
46
+ = '#'
47
+ space
48
+ title : content
49
+ end
50
+ { return title .join (' ' ); }
51
+
52
+ description
53
+ = description : content
54
+ { return description .join (' ' ); }
55
+
56
+ content = .+
57
+ space = [ ]?
58
+ end = [\n ]
59
+
60
+ // @import
61
+
62
+ // page
63
+ // page_title
64
+ // page_description
65
+ // page_test
66
+ // page_action
67
+ // page_hint
68
+ // page_on_complete
69
+
70
+ // @action_insert
71
+ // @action_set
72
+ // @action_write
73
+ // @action_write_from_file
74
+ // @action_open
75
+ // @action_cursor_position
Original file line number Diff line number Diff line change
1
+ import test from 'ava' ;
2
+ import pegjs from 'pegjs' ;
3
+ import { readFileSync } from 'fs' ;
4
+
5
+ const parser = readFileSync ( '../parser/index.pegjs' , 'utf8' ) ;
6
+ const parse = pegjs . buildParser ( parser ) . parse ;
7
+
8
+ test ( 'parses a title' , t => {
9
+ const data = `# Title
10
+ some description
11
+ ` ;
12
+ const expected = {
13
+ info : {
14
+ title : 'Title' ,
15
+ description : 'some description'
16
+ }
17
+ } ;
18
+ const result = parse ( data ) ;
19
+ t . deepEqual ( result . info , expected . info ) ;
20
+ } ) ;
You can’t perform that action at this time.
0 commit comments