1
1
"use strict" ;
2
2
var fs = require ( 'fs' ) ;
3
- var Match = require ( './matchers' ) ;
4
3
var validate = require ( './validators' ) ;
5
- var actions_1 = require ( './actions' ) ;
6
4
var cleanup_1 = require ( './cleanup' ) ;
5
+ var project_1 = require ( './parser/project' ) ;
7
6
function build ( lines ) {
8
7
var result = {
9
8
project : { } ,
@@ -14,130 +13,7 @@ function build(lines) {
14
13
page : - 1 ,
15
14
task : - 1
16
15
} ;
17
- return project ( result , lines , index ) ;
18
- }
19
- function project ( result , lines , index ) {
20
- result . project = {
21
- title : '' ,
22
- description : ''
23
- } ;
24
- for ( var i = 0 ; i < lines . length ; i ++ ) {
25
- var line = lines [ i ] ;
26
- var projectTitleMatch = Match . project ( line ) ;
27
- if ( ! ! projectTitleMatch ) {
28
- result . project . title = projectTitleMatch . trim ( ) ;
29
- }
30
- else if ( ! ! Match . chapter ( line ) ) {
31
- return chapter ( result , lines . slice ( i ) , index ) ;
32
- }
33
- else {
34
- result . project . description += line + '\n' ;
35
- }
36
- }
37
- return result ;
38
- }
39
- function chapter ( result , lines , index ) {
40
- index . page = - 1 ;
41
- index . chapter += 1 ;
42
- result . chapters . push ( {
43
- title : Match . chapter ( lines [ 0 ] ) . trim ( ) ,
44
- pages : [ ]
45
- } ) ;
46
- for ( var i = 0 ; i < lines . length ; i ++ ) {
47
- var line = lines [ i ] ;
48
- if ( Match . page ( line ) ) {
49
- return page ( result , lines . slice ( i ) , index ) ;
50
- }
51
- else if ( Match . chapter ( line ) && i > 0 ) {
52
- return chapter ( result , lines . slice ( i ) , index ) ;
53
- }
54
- else {
55
- if ( result . chapters [ index . chapter ] . description === undefined ) {
56
- result . chapters [ index . chapter ] . description = '' ;
57
- }
58
- result . chapters [ index . chapter ] . description += line + '\n' ;
59
- }
60
- }
61
- return result ;
62
- }
63
- function page ( result , lines , index ) {
64
- var hasBreak = null ;
65
- index . page += 1 ;
66
- index . task = - 1 ;
67
- result . chapters [ index . chapter ] . pages . push ( {
68
- title : Match . page ( lines [ 0 ] ) . trim ( )
69
- } ) ;
70
- var inCodeBlock = false ;
71
- for ( var i = 1 ; i < lines . length ; i ++ ) {
72
- var line = lines [ i ] ;
73
- if ( ! ! Match . codeBlock ( line ) ) {
74
- inCodeBlock = ! inCodeBlock ;
75
- }
76
- if ( ! inCodeBlock ) {
77
- if ( ! hasBreak && Match . isEmpty ( line ) ) {
78
- hasBreak = i ;
79
- }
80
- else if ( ! ! Match . chapter ( line ) ) {
81
- return chapter ( result , lines . slice ( i ) , index ) ;
82
- }
83
- else if ( ! ! Match . page ( line ) ) {
84
- return page ( result , lines . slice ( i ) , index ) ;
85
- }
86
- else if ( ! ! Match . task ( line ) ) {
87
- if ( result . chapters [ index . chapter ] . pages [ index . page ] . tasks === undefined ) {
88
- result . chapters [ index . chapter ] . pages [ index . page ] . tasks = [ ] ;
89
- }
90
- return task ( result , lines . slice ( i ) , index ) ;
91
- }
92
- else {
93
- if ( ! hasBreak ) {
94
- if ( result . chapters [ index . chapter ] . pages [ index . page ] . description === undefined ) {
95
- result . chapters [ index . chapter ] . pages [ index . page ] . description = '' ;
96
- }
97
- result . chapters [ index . chapter ] . pages [ index . page ] . description += line + '\n' ;
98
- }
99
- else {
100
- if ( result . chapters [ index . chapter ] . pages [ index . page ] . explanation === undefined ) {
101
- result . chapters [ index . chapter ] . pages [ index . page ] . explanation = '' ;
102
- }
103
- result . chapters [ index . chapter ] . pages [ index . page ] . explanation += line + '\n' ;
104
- }
105
- }
106
- }
107
- }
108
- return result ;
109
- }
110
- function task ( result , lines , index ) {
111
- result . chapters [ index . chapter ] . pages [ index . page ] . tasks . push ( {
112
- description : Match . task ( lines [ 0 ] )
113
- } ) ;
114
- index . task += 1 ;
115
- var inCodeBlock = false ;
116
- for ( var i = 1 ; i < lines . length ; i ++ ) {
117
- var line = lines [ i ] ;
118
- if ( ! ! Match . codeBlock ( line ) ) {
119
- inCodeBlock = ! inCodeBlock ;
120
- }
121
- if ( ! inCodeBlock ) {
122
- var isAction = Match . isAction ( line ) ;
123
- if ( ! ! isAction ) {
124
- result = actions_1 . default ( result , line , index ) ;
125
- }
126
- else if ( ! ! Match . task ( line ) ) {
127
- return task ( result , lines . slice ( i ) , index ) ;
128
- }
129
- else if ( ! ! Match . page ( line ) ) {
130
- return page ( result , lines . slice ( i ) , index ) ;
131
- }
132
- else if ( ! ! Match . chapter ( line ) ) {
133
- return chapter ( result , lines . slice ( i ) , index ) ;
134
- }
135
- else {
136
- result . chapters [ index . chapter ] . pages [ index . page ] . tasks [ index . task ] . description += line + '\n' ;
137
- }
138
- }
139
- }
140
- return result ;
16
+ return project_1 . default ( result , lines , index ) ;
141
17
}
142
18
function default_1 ( filePath , output ) {
143
19
if ( output === void 0 ) { output = './coderoad.json' ; }
0 commit comments