File tree Expand file tree Collapse file tree 11 files changed +154
-50
lines changed Expand file tree Collapse file tree 11 files changed +154
-50
lines changed Original file line number Diff line number Diff line change 1- action
2- = action_insert
1+ task_action
2+ = '@action'
3+ '('
4+ type : action_type
5+ ')'
6+
7+ action_type
8+ = action_open
39 / action_set
10+ / action_insert
411 / action_write
512 / action_write_from_file
6- / action_open
13+ break
14+
15+ action_open
16+ = 'open'
17+ '('
18+ quote
19+ file : file_path
20+ quote
21+ ')'
722
823action_insert
9- = 'insert(' + content + ')'
24+ = 'insert'
25+ '('
26+ content : .+
27+ ')'
28+
1029action_set
11- = 'set(' + content + ')'
30+ = 'set'
31+ '('
32+ content : .+
33+ ')'
34+
1235action_write
13- = 'write(' + content + ')'
36+ = 'write'
37+ '('
38+ quote
39+ to : file_path
40+ quote
41+ ',' space ?
42+ quote
43+ content : .+
44+ quote
45+ ')'
46+
1447action_write_from_file
15- = 'writeFromFile(' + content + ')'
16- action_open
17- = 'open(' + quote ? + file_path + quote ? ')'
48+ = 'writeFromFile'
49+ '('
50+ quote
51+ to : file_path
52+ quote
53+ ',' space ?
54+ quote
55+ from : file_path
56+ quote
57+ ')'
Original file line number Diff line number Diff line change @@ -80,13 +80,14 @@ page_task
8080 }
8181
8282page_actions
83- = page_onComplete
83+ = on_page_complete
8484 / page_import
8585
8686task_actions
8787 = test : task_test
8888 / hint : task_hint
8989 / action : task_action
90+ / onPageComplete : on_page_complete
9091
9192info_title
9293 = '#'
@@ -126,9 +127,70 @@ task_hint
126127
127128task_action
128129 = '@action'
130+ '('
131+ type : action_type
132+ ')'
133+
134+ action_type
135+ = action_open
136+ / action_set
137+ / action_insert
138+ / action_write
139+ / action_write_from_file
140+ break
141+
142+ action_open
143+ = 'open'
144+ '('
145+ quote
146+ file : file_path
147+ quote
148+ ')'
149+
150+ action_insert
151+ = 'insert'
152+ '('
153+ content : .+
154+ ')'
155+
156+ action_set
157+ = 'set'
158+ '('
159+ content : .+
160+ ')'
161+
162+ action_write
163+ = 'write'
164+ '('
165+ quote
166+ to : file_path
167+ quote
168+ ',' space ?
169+ quote
170+ content : .+
171+ quote
172+ ')'
173+
174+ action_write_from_file
175+ = 'writeFromFile'
176+ '('
177+ quote
178+ to : file_path
179+ quote
180+ ',' space ?
181+ quote
182+ from : file_path
183+ quote
184+ ')'
129185
130- page_onComplete
186+ on_page_complete
131187 = '@onPageComplete'
188+ '('
189+ quote
190+ content : .+
191+ quote
192+ ')'
193+ { return { type: ' onPageComplete' , value: content .join (' ' ) }; }
132194
133195page_import
134196 = '@import'
Original file line number Diff line number Diff line change 1+ const { readFileSync } = require ( 'fs' ) ;
2+ const pegjs = require ( 'pegjs' ) ;
3+
4+ const files = [
5+ 'index' , 'action'
6+ ] ;
7+
8+ let parser = '' ;
9+ files . forEach ( f => parser += readFileSync ( `../parser/${ f } .pegjs` , 'utf8' ) ) ;
10+
11+ const parse = pegjs . buildParser ( parser ) . parse ;
12+
13+ module . exports = parse ;
Original file line number Diff line number Diff line change 11import 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 ;
2+ import parse from './_parser' ;
73
84test . todo ( 'parses an action: open' ) ;
95
Original file line number Diff line number Diff line change 11import 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 ;
2+ import parse from './_parser' ;
73
84test . todo ( 'parses an import' ) ;
95test . todo ( 'parses multiple imports' ) ;
Original file line number Diff line number Diff line change 11import 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 ;
2+ import parse from './_parser' ;
73
84test ( 'parses an info title' , t => {
95 const data = `# Title\n` ;
@@ -61,7 +57,7 @@ the next line`
6157 t . deepEqual ( result . info , expected . info ) ;
6258} ) ;
6359
64- test ( 'parses an info description seperated by breaks' , t => {
60+ test . skip ( 'parses an info description seperated by breaks' , t => {
6561 const data = `# Title
6662some description
6763
Original file line number Diff line number Diff line change 1+ import test from 'ava' ;
2+ import parse from './_parser' ;
3+
4+ test ( 'parses an onPageComplete' , t => {
5+ const expected = 'when page ends' ;
6+ const data = `# Title
7+ description
8+
9+ ## Page One
10+ description
11+
12+ @onPageComplete('${ expected } ')
13+ ` ;
14+ const result = parse ( data ) ;
15+ t . is ( result . pages [ 0 ] . onPageComplete , expected ) ;
16+ } ) ;
17+
18+ test . todo ( 'throws when multiple onPageCompletes' ) ;
Original file line number Diff line number Diff line change 11import 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 ;
2+ import parse from './_parser' ;
73
84test ( 'parses a page title' , t => {
95 const data = `# Title
@@ -49,6 +45,3 @@ page two description
4945 t . is ( result . pages [ 0 ] . description , expected [ 0 ] . description ) ;
5046 t . is ( result . pages [ 1 ] . description , expected [ 1 ] . description ) ;
5147} ) ;
52-
53- test . todo ( 'parses an onPageComplete' ) ;
54- test . todo ( 'throws when multiple onPageCompletes' ) ;
Original file line number Diff line number Diff line change 11import 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 ;
2+ import parse from './_parser' ;
73
84test ( 'parses a task hint' , t => {
95 const data = `# Title
@@ -78,3 +74,5 @@ description
7874 const result = parse ( data ) ;
7975 t . deepEqual ( result . pages [ 0 ] . tasks , expected ) ;
8076} ) ;
77+
78+ test . todo ( 'parses multiline task hints' ) ;
Original file line number Diff line number Diff line change 11import 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 ;
2+ import parse from './_parser' ;
73
84test ( 'parses a task test' , t => {
95 const data = `# Title
You can’t perform that action at this time.
0 commit comments