1
+ // Copyright (C) 2023, AltaModa Technologies, LLC. All rights reserved.
2
+ //
3
+ // This project is licensed under the terms of the MIT license (cf. LICENSE file in root).
4
+ //
5
+
1
6
2
7
use log:: { info, warn, as_error} ;
3
8
@@ -7,8 +12,7 @@ use pta_types::*;
7
12
8
13
// TODO: how to isolate pest so clients can just use lib (w/o requiring pest as here)
9
14
use pest:: { * , iterators:: Pair } ;
10
- use pta_parser:: { GenericParser , Rule } ;
11
-
15
+ use pta_parser:: parsers:: generic;
12
16
13
17
#[ derive( Default ) ]
14
18
pub struct LedgerBuilder {
@@ -20,17 +24,17 @@ impl LedgerBuilder {
20
24
21
25
self . pl = ParsedLedger :: default ( ) ;
22
26
23
- match GenericParser :: parse ( Rule :: ledger , & ledger) {
27
+ match generic :: Parser :: parse ( generic :: Rule :: generic_ledger , & ledger) {
24
28
Ok ( root) => {
25
- info ! ( "Successfully parsed with Rule::ledger " ) ;
29
+ info ! ( "Successfully parsed with generic:: Rule::generic_ledger " ) ;
26
30
for pair in root. into_iter ( ) {
27
31
info ! ( "LedgerBuilder::from_string: root pair is {:}" , pair. as_str( ) ) ;
28
32
self . handle_pair ( pair) ?;
29
33
}
30
34
}
31
35
32
36
Err ( err) => {
33
- warn ! ( err = as_error!( err) ; "failed to parse with Rule::ledger " ) ;
37
+ warn ! ( err = as_error!( err) ; "failed to parse with generic:: Rule::generic_ledger " ) ;
34
38
return Err ( Box :: new ( err) ) ;
35
39
}
36
40
}
@@ -39,48 +43,48 @@ impl LedgerBuilder {
39
43
}
40
44
41
45
42
- fn handle_pair ( self : & Self , pair : Pair < ' _ , Rule > ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
46
+ fn handle_pair ( self : & Self , pair : Pair < ' _ , generic :: Rule > ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
43
47
44
48
match pair. as_rule ( ) {
45
- Rule :: comment => {
46
- info ! ( "Rule::comment: {:?}" , pair. as_span( ) . as_str( ) ) ;
49
+ generic :: Rule :: comment => {
50
+ info ! ( "generic:: Rule::comment: {:?}" , pair. as_span( ) . as_str( ) ) ;
47
51
}
48
- Rule :: EOI => {
49
- info ! ( "Rule::EOI at {:?}" , pair. line_col( ) ) ;
52
+ generic :: Rule :: EOI => {
53
+ info ! ( "generic:: Rule::EOI at {:?}" , pair. line_col( ) ) ;
50
54
}
51
55
52
- Rule :: WHITESPACE => { }
53
- Rule :: acct_descriptor => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
54
- Rule :: acct_separator => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
55
- Rule :: balance_directive => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
56
- Rule :: comment_or_newline => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
57
- Rule :: comment_token => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
58
- Rule :: currency => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
59
- Rule :: decimal_value => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
60
- Rule :: directive_close => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
61
- Rule :: directive_commodity => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
62
- Rule :: directive_open => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
63
- Rule :: directives => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
64
- Rule :: empty_line => { }
65
- Rule :: iso8601_date_extended => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
66
- Rule :: ledger => {
56
+ generic :: Rule :: WHITESPACE => { }
57
+ generic :: Rule :: acct_descriptor => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
58
+ generic :: Rule :: acct_separator => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
59
+ generic :: Rule :: balance_directive => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
60
+ generic :: Rule :: comment_or_newline => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
61
+ generic :: Rule :: comment_token => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
62
+ generic :: Rule :: currency => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
63
+ generic :: Rule :: decimal_value => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
64
+ generic :: Rule :: directive_close => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
65
+ generic :: Rule :: directive_commodity => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
66
+ generic :: Rule :: directive_open => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
67
+ generic :: Rule :: directives => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
68
+ generic :: Rule :: empty_line => { }
69
+ generic :: Rule :: iso8601_date_extended => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
70
+ generic :: Rule :: generic_ledger => {
67
71
return handle_ledger_rule ( & pair) ;
68
72
}
69
- Rule :: options => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
70
- Rule :: posting_basic => {
73
+ generic :: Rule :: options => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
74
+ generic :: Rule :: posting_basic => {
71
75
dump_pair ( & pair) ; return Ok ( ( ) ) ;
72
76
}
73
- Rule :: posting_indent => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
74
- Rule :: sub_acct => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
75
- Rule :: top_level_acct => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
76
- Rule :: trans_annotation => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
77
- Rule :: trans_description => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
78
- Rule :: trans_description_text => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
79
- Rule :: trans_header => {
77
+ generic :: Rule :: posting_indent => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
78
+ generic :: Rule :: sub_acct => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
79
+ generic :: Rule :: top_level_acct => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
80
+ generic :: Rule :: trans_annotation => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
81
+ generic :: Rule :: trans_description => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
82
+ generic :: Rule :: trans_description_text => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
83
+ generic :: Rule :: trans_header => {
80
84
let mut xn = raw_transaction:: RawTransaction :: default ( ) ;
81
85
return handle_trans_header ( & mut xn, & pair) ;
82
86
}
83
- Rule :: transaction_block => {
87
+ generic :: Rule :: transaction_block => {
84
88
let mut xn = raw_transaction:: RawTransaction :: default ( ) ;
85
89
return handle_trans_block ( & mut xn, & pair) ;
86
90
}
@@ -93,23 +97,23 @@ impl LedgerBuilder {
93
97
}
94
98
95
99
96
- fn dump_rule_of_pair ( p : & Pair < Rule > ) {
100
+ fn dump_rule_of_pair ( p : & Pair < generic :: Rule > ) {
97
101
info ! ( "RULE: {:?} at {:?}; SPAN: {:?}" , & p. as_rule( ) , & p. line_col( ) , & p. as_span( ) ) ;
98
102
}
99
103
100
104
// REMOVE:
101
105
#[ allow( dead_code) ]
102
- fn dump_rule ( r : & Rule , s : & Span ) {
106
+ fn dump_rule ( r : & generic :: Rule , s : & Span ) {
103
107
info ! ( "RULE: {:?}; SPAN: {:?}" , & r, & s) ;
104
108
}
105
109
106
- fn dump_pair ( p : & Pair < Rule > ) {
110
+ fn dump_pair ( p : & Pair < generic :: Rule > ) {
107
111
dump_rule_of_pair ( p) ;
108
112
}
109
113
110
114
111
115
112
- fn handle_ledger_rule ( pair : & Pair < Rule > ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
116
+ fn handle_ledger_rule ( pair : & Pair < generic :: Rule > ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
113
117
for inner_pair in pair. clone ( ) . into_inner ( ) {
114
118
115
119
match handle_pair ( inner_pair) {
@@ -126,9 +130,9 @@ fn handle_ledger_rule(pair: & Pair<Rule>) -> Result<(), Box<dyn std::error::Erro
126
130
}
127
131
128
132
#[ allow( dead_code) ] // TODO: REMOVE allow dead code
129
- fn handle_posting_basic ( _xn : & mut raw_transaction:: RawTransaction , pair : & Pair < Rule > ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
133
+ fn handle_posting_basic ( _xn : & mut raw_transaction:: RawTransaction , pair : & Pair < generic :: Rule > ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
130
134
131
- match GenericParser :: parse ( Rule :: posting_basic, pair. as_span ( ) . as_str ( ) ) {
135
+ match generic :: Parser :: parse ( generic :: Rule :: posting_basic, pair. as_span ( ) . as_str ( ) ) {
132
136
Ok ( _posting) => {
133
137
info ! ( "handling posting_basic" ) ;
134
138
// handle_posting_basic(xn, posting); TODO: fix
@@ -144,13 +148,13 @@ fn handle_posting_basic(_xn: &mut raw_transaction::RawTransaction, pair: &Pair<R
144
148
return Ok ( ( ) ) ;
145
149
}
146
150
147
- fn handle_trans_header ( _: & mut raw_transaction:: RawTransaction , _: & Pair < Rule > ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
151
+ fn handle_trans_header ( _: & mut raw_transaction:: RawTransaction , _: & Pair < generic :: Rule > ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
148
152
info ! ( "handling trans_header..." ) ;
149
153
150
154
return Ok ( ( ) ) ;
151
155
}
152
156
153
- fn handle_trans_block ( xn : & mut raw_transaction:: RawTransaction , pair : & Pair < Rule > ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
157
+ fn handle_trans_block ( xn : & mut raw_transaction:: RawTransaction , pair : & Pair < generic :: Rule > ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
154
158
info ! ( "handling trans_block..." ) ;
155
159
156
160
xn. pinfo = ParserInfo {
@@ -161,7 +165,7 @@ fn handle_trans_block(xn: &mut raw_transaction::RawTransaction, pair: &Pair<Rule
161
165
} ;
162
166
163
167
info ! ( "parse with trans_header" ) ;
164
- match GenericParser :: parse ( Rule :: trans_header, & pair. as_span ( ) . as_str ( ) ) {
168
+ match generic :: Parser :: parse ( generic :: Rule :: trans_header, & pair. as_span ( ) . as_str ( ) ) {
165
169
Ok ( hdr) => {
166
170
for pair in hdr. into_iter ( ) {
167
171
info ! ( "attempt handle_trans_header on {}" , pair. as_span( ) . as_str( ) ) ;
@@ -195,45 +199,45 @@ fn handle_trans_block(xn: &mut raw_transaction::RawTransaction, pair: &Pair<Rule
195
199
196
200
197
201
198
- fn handle_pair ( pair : Pair < ' _ , Rule > ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
202
+ fn handle_pair ( pair : Pair < ' _ , generic :: Rule > ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
199
203
match pair. as_rule ( ) {
200
- Rule :: comment => {
201
- info ! ( "Rule::comment: {:?}" , pair. as_span( ) . as_str( ) ) ;
204
+ generic :: Rule :: comment => {
205
+ info ! ( "generic:: Rule::comment: {:?}" , pair. as_span( ) . as_str( ) ) ;
202
206
}
203
- Rule :: EOI => {
204
- info ! ( "Rule::EOI at {:?}" , pair. line_col( ) ) ;
207
+ generic :: Rule :: EOI => {
208
+ info ! ( "generic:: Rule::EOI at {:?}" , pair. line_col( ) ) ;
205
209
}
206
210
207
- Rule :: WHITESPACE => { }
208
- Rule :: acct_descriptor => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
209
- Rule :: acct_separator => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
210
- Rule :: balance_directive => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
211
- Rule :: comment_or_newline => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
212
- Rule :: comment_token => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
213
- Rule :: currency => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
214
- Rule :: decimal_value => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
215
- Rule :: directive_close => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
216
- Rule :: directive_commodity => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
217
- Rule :: directive_open => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
218
- Rule :: directives => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
219
- Rule :: empty_line => { }
220
- Rule :: iso8601_date_extended => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
221
- Rule :: ledger => {
211
+ generic :: Rule :: WHITESPACE => { }
212
+ generic :: Rule :: acct_descriptor => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
213
+ generic :: Rule :: acct_separator => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
214
+ generic :: Rule :: balance_directive => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
215
+ generic :: Rule :: comment_or_newline => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
216
+ generic :: Rule :: comment_token => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
217
+ generic :: Rule :: currency => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
218
+ generic :: Rule :: decimal_value => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
219
+ generic :: Rule :: directive_close => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
220
+ generic :: Rule :: directive_commodity => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
221
+ generic :: Rule :: directive_open => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
222
+ generic :: Rule :: directives => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
223
+ generic :: Rule :: empty_line => { }
224
+ generic :: Rule :: iso8601_date_extended => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
225
+ generic :: Rule :: generic_ledger => {
222
226
return handle_ledger_rule ( & pair) ;
223
227
}
224
- Rule :: options => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
225
- Rule :: posting_basic => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
226
- Rule :: posting_indent => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
227
- Rule :: sub_acct => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
228
- Rule :: top_level_acct => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
229
- Rule :: trans_annotation => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
230
- Rule :: trans_description => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
231
- Rule :: trans_description_text => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
232
- Rule :: trans_header => {
228
+ generic :: Rule :: options => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
229
+ generic :: Rule :: posting_basic => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
230
+ generic :: Rule :: posting_indent => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
231
+ generic :: Rule :: sub_acct => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
232
+ generic :: Rule :: top_level_acct => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
233
+ generic :: Rule :: trans_annotation => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
234
+ generic :: Rule :: trans_description => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
235
+ generic :: Rule :: trans_description_text => { dump_pair ( & pair) ; return Ok ( ( ) ) ; }
236
+ generic :: Rule :: trans_header => {
233
237
let mut xn = raw_transaction:: RawTransaction :: default ( ) ;
234
238
return handle_trans_header ( & mut xn, & pair) ;
235
239
}
236
- Rule :: transaction_block => {
240
+ generic :: Rule :: transaction_block => {
237
241
let mut xn = raw_transaction:: RawTransaction :: default ( ) ;
238
242
return handle_trans_block ( & mut xn, & pair) ;
239
243
}
0 commit comments