@@ -3,7 +3,7 @@ use std::borrow::Cow;
3
3
use bstr:: { BStr , ByteSlice } ;
4
4
use winnow:: {
5
5
combinator:: { alt, delimited, opt, preceded, repeat} ,
6
- error:: { ErrorKind , InputError as NomError , ParserError as _} ,
6
+ error:: { InputError as NomError , ParserError as _} ,
7
7
prelude:: * ,
8
8
stream:: { Offset as _, Stream as _} ,
9
9
token:: { one_of, take_till, take_while} ,
@@ -78,7 +78,7 @@ fn newlines_from(input: &[u8], start: winnow::stream::Checkpoint<&[u8], &[u8]>)
78
78
start_input. next_slice ( offset) . iter ( ) . filter ( |c| * * c == b'\n' ) . count ( )
79
79
}
80
80
81
- fn comment < ' i > ( i : & mut & ' i [ u8 ] ) -> PResult < Comment < ' i > , NomError < & ' i [ u8 ] > > {
81
+ fn comment < ' i > ( i : & mut & ' i [ u8 ] ) -> ModalResult < Comment < ' i > , NomError < & ' i [ u8 ] > > {
82
82
(
83
83
one_of ( [ ';' , '#' ] ) ,
84
84
take_till ( 0 .., |c| c == b'\n' ) . map ( |text : & [ u8 ] | Cow :: Borrowed ( text. as_bstr ( ) ) ) ,
@@ -94,7 +94,7 @@ fn section<'i>(
94
94
i : & mut & ' i [ u8 ] ,
95
95
node : & mut ParseNode ,
96
96
dispatch : & mut dyn FnMut ( Event < ' i > ) ,
97
- ) -> PResult < ( ) , NomError < & ' i [ u8 ] > > {
97
+ ) -> ModalResult < ( ) , NomError < & ' i [ u8 ] > > {
98
98
let start = i. checkpoint ( ) ;
99
99
let header = section_header ( i) . map_err ( |e| {
100
100
i. reset ( & start) ;
@@ -129,7 +129,7 @@ fn section<'i>(
129
129
Ok ( ( ) )
130
130
}
131
131
132
- fn section_header < ' i > ( i : & mut & ' i [ u8 ] ) -> PResult < section:: Header < ' i > , NomError < & ' i [ u8 ] > > {
132
+ fn section_header < ' i > ( i : & mut & ' i [ u8 ] ) -> ModalResult < section:: Header < ' i > , NomError < & ' i [ u8 ] > > {
133
133
// No spaces must be between section name and section start
134
134
let name = preceded ( '[' , take_while ( 1 .., is_section_char) . map ( bstr:: ByteSlice :: as_bstr) ) . parse_next ( i) ?;
135
135
@@ -150,7 +150,7 @@ fn section_header<'i>(i: &mut &'i [u8]) -> PResult<section::Header<'i>, NomError
150
150
} ;
151
151
152
152
if header. name . is_empty ( ) {
153
- return Err ( winnow:: error:: ErrMode :: from_error_kind ( i , ErrorKind :: Fail ) ) ;
153
+ return Err ( winnow:: error:: ErrMode :: from_input ( i ) ) ;
154
154
}
155
155
return Ok ( header) ;
156
156
}
@@ -169,7 +169,7 @@ fn is_section_char(c: u8) -> bool {
169
169
c. is_ascii_alphanumeric ( ) || c == b'-' || c == b'.'
170
170
}
171
171
172
- fn sub_section < ' i > ( i : & mut & ' i [ u8 ] ) -> PResult < Cow < ' i , BStr > , NomError < & ' i [ u8 ] > > {
172
+ fn sub_section < ' i > ( i : & mut & ' i [ u8 ] ) -> ModalResult < Cow < ' i , BStr > , NomError < & ' i [ u8 ] > > {
173
173
let mut output = Cow :: Borrowed ( Default :: default ( ) ) ;
174
174
if let Some ( sub) = opt ( subsection_subset) . parse_next ( i) ? {
175
175
output = Cow :: Borrowed ( sub. as_bstr ( ) ) ;
@@ -181,15 +181,15 @@ fn sub_section<'i>(i: &mut &'i [u8]) -> PResult<Cow<'i, BStr>, NomError<&'i [u8]
181
181
Ok ( output)
182
182
}
183
183
184
- fn subsection_subset < ' i > ( i : & mut & ' i [ u8 ] ) -> PResult < & ' i [ u8 ] , NomError < & ' i [ u8 ] > > {
184
+ fn subsection_subset < ' i > ( i : & mut & ' i [ u8 ] ) -> ModalResult < & ' i [ u8 ] , NomError < & ' i [ u8 ] > > {
185
185
alt ( ( subsection_unescaped, subsection_escaped_char) ) . parse_next ( i)
186
186
}
187
187
188
- fn subsection_unescaped < ' i > ( i : & mut & ' i [ u8 ] ) -> PResult < & ' i [ u8 ] , NomError < & ' i [ u8 ] > > {
188
+ fn subsection_unescaped < ' i > ( i : & mut & ' i [ u8 ] ) -> ModalResult < & ' i [ u8 ] , NomError < & ' i [ u8 ] > > {
189
189
take_while ( 1 .., is_subsection_unescaped_char) . parse_next ( i)
190
190
}
191
191
192
- fn subsection_escaped_char < ' i > ( i : & mut & ' i [ u8 ] ) -> PResult < & ' i [ u8 ] , NomError < & ' i [ u8 ] > > {
192
+ fn subsection_escaped_char < ' i > ( i : & mut & ' i [ u8 ] ) -> ModalResult < & ' i [ u8 ] , NomError < & ' i [ u8 ] > > {
193
193
preceded ( '\\' , one_of ( is_subsection_escapable_char) . take ( ) ) . parse_next ( i)
194
194
}
195
195
@@ -205,7 +205,7 @@ fn key_value_pair<'i>(
205
205
i : & mut & ' i [ u8 ] ,
206
206
node : & mut ParseNode ,
207
207
dispatch : & mut dyn FnMut ( Event < ' i > ) ,
208
- ) -> PResult < ( ) , NomError < & ' i [ u8 ] > > {
208
+ ) -> ModalResult < ( ) , NomError < & ' i [ u8 ] > > {
209
209
* node = ParseNode :: Name ;
210
210
if let Some ( name) = opt ( config_name) . parse_next ( i) ? {
211
211
dispatch ( Event :: SectionValueName ( section:: ValueName ( Cow :: Borrowed ( name) ) ) ) ;
@@ -223,7 +223,7 @@ fn key_value_pair<'i>(
223
223
224
224
/// Parses the config name of a config pair. Assumes the input has already been
225
225
/// trimmed of any leading whitespace.
226
- fn config_name < ' i > ( i : & mut & ' i [ u8 ] ) -> PResult < & ' i BStr , NomError < & ' i [ u8 ] > > {
226
+ fn config_name < ' i > ( i : & mut & ' i [ u8 ] ) -> ModalResult < & ' i BStr , NomError < & ' i [ u8 ] > > {
227
227
(
228
228
one_of ( |c : u8 | c. is_ascii_alphabetic ( ) ) ,
229
229
take_while ( 0 .., |c : u8 | c. is_ascii_alphanumeric ( ) || c == b'-' ) ,
@@ -233,7 +233,7 @@ fn config_name<'i>(i: &mut &'i [u8]) -> PResult<&'i BStr, NomError<&'i [u8]>> {
233
233
. parse_next ( i)
234
234
}
235
235
236
- fn config_value < ' i > ( i : & mut & ' i [ u8 ] , dispatch : & mut dyn FnMut ( Event < ' i > ) ) -> PResult < ( ) , NomError < & ' i [ u8 ] > > {
236
+ fn config_value < ' i > ( i : & mut & ' i [ u8 ] , dispatch : & mut dyn FnMut ( Event < ' i > ) ) -> ModalResult < ( ) , NomError < & ' i [ u8 ] > > {
237
237
if opt ( '=' ) . parse_next ( i) ?. is_some ( ) {
238
238
dispatch ( Event :: KeyValueSeparator ) ;
239
239
if let Some ( whitespace) = opt ( take_spaces1) . parse_next ( i) ? {
@@ -251,7 +251,7 @@ fn config_value<'i>(i: &mut &'i [u8], dispatch: &mut dyn FnMut(Event<'i>)) -> PR
251
251
252
252
/// Handles parsing of known-to-be values. This function handles both single
253
253
/// line values as well as values that are continuations.
254
- fn value_impl < ' i > ( i : & mut & ' i [ u8 ] , dispatch : & mut dyn FnMut ( Event < ' i > ) ) -> PResult < ( ) , NomError < & ' i [ u8 ] > > {
254
+ fn value_impl < ' i > ( i : & mut & ' i [ u8 ] , dispatch : & mut dyn FnMut ( Event < ' i > ) ) -> ModalResult < ( ) , NomError < & ' i [ u8 ] > > {
255
255
let start_checkpoint = i. checkpoint ( ) ;
256
256
let mut value_start_checkpoint = i. checkpoint ( ) ;
257
257
let mut value_end = None ;
@@ -278,17 +278,17 @@ fn value_impl<'i>(i: &mut &'i [u8], dispatch: &mut dyn FnMut(Event<'i>)) -> PRes
278
278
let escape_index = escaped_index - 1 ;
279
279
let Some ( mut c) = i. next_token ( ) else {
280
280
i. reset ( & start_checkpoint) ;
281
- return Err ( winnow:: error:: ErrMode :: from_error_kind ( i , ErrorKind :: Token ) ) ;
281
+ return Err ( winnow:: error:: ErrMode :: from_input ( i ) ) ;
282
282
} ;
283
283
let mut consumed = 1 ;
284
284
if c == b'\r' {
285
285
c = i. next_token ( ) . ok_or_else ( || {
286
286
i. reset ( & start_checkpoint) ;
287
- winnow:: error:: ErrMode :: from_error_kind ( i , ErrorKind :: Token )
287
+ winnow:: error:: ErrMode :: from_input ( i )
288
288
} ) ?;
289
289
if c != b'\n' {
290
290
i. reset ( & start_checkpoint) ;
291
- return Err ( winnow:: error:: ErrMode :: from_error_kind ( i , ErrorKind :: Slice ) ) ;
291
+ return Err ( winnow:: error:: ErrMode :: from_input ( i ) ) ;
292
292
}
293
293
consumed += 1 ;
294
294
}
@@ -313,7 +313,7 @@ fn value_impl<'i>(i: &mut &'i [u8], dispatch: &mut dyn FnMut(Event<'i>)) -> PRes
313
313
b'n' | b't' | b'\\' | b'b' | b'"' => { }
314
314
_ => {
315
315
i. reset ( & start_checkpoint) ;
316
- return Err ( winnow:: error:: ErrMode :: from_error_kind ( i , ErrorKind :: Token ) ) ;
316
+ return Err ( winnow:: error:: ErrMode :: from_input ( i ) ) ;
317
317
}
318
318
}
319
319
}
@@ -326,7 +326,7 @@ fn value_impl<'i>(i: &mut &'i [u8], dispatch: &mut dyn FnMut(Event<'i>)) -> PRes
326
326
}
327
327
if is_in_quotes {
328
328
i. reset ( & start_checkpoint) ;
329
- return Err ( winnow:: error:: ErrMode :: from_error_kind ( i , ErrorKind :: Slice ) ) ;
329
+ return Err ( winnow:: error:: ErrMode :: from_input ( i ) ) ;
330
330
}
331
331
332
332
let value_end = match value_end {
@@ -360,13 +360,13 @@ fn value_impl<'i>(i: &mut &'i [u8], dispatch: &mut dyn FnMut(Event<'i>)) -> PRes
360
360
Ok ( ( ) )
361
361
}
362
362
363
- fn take_spaces1 < ' i > ( i : & mut & ' i [ u8 ] ) -> PResult < & ' i BStr , NomError < & ' i [ u8 ] > > {
363
+ fn take_spaces1 < ' i > ( i : & mut & ' i [ u8 ] ) -> ModalResult < & ' i BStr , NomError < & ' i [ u8 ] > > {
364
364
take_while ( 1 .., winnow:: stream:: AsChar :: is_space)
365
365
. map ( bstr:: ByteSlice :: as_bstr)
366
366
. parse_next ( i)
367
367
}
368
368
369
- fn take_newlines1 < ' i > ( i : & mut & ' i [ u8 ] ) -> PResult < & ' i BStr , NomError < & ' i [ u8 ] > > {
369
+ fn take_newlines1 < ' i > ( i : & mut & ' i [ u8 ] ) -> ModalResult < & ' i BStr , NomError < & ' i [ u8 ] > > {
370
370
repeat ( 1 ..1024 , alt ( ( "\r \n " , "\n " ) ) )
371
371
. map ( |( ) | ( ) )
372
372
. take ( )
0 commit comments