@@ -3,7 +3,7 @@ use std::borrow::Cow;
33use bstr:: { BStr , ByteSlice } ;
44use winnow:: {
55 combinator:: { alt, delimited, opt, preceded, repeat} ,
6- error:: { ErrorKind , InputError as NomError , ParserError as _} ,
6+ error:: { InputError as NomError , ParserError as _} ,
77 prelude:: * ,
88 stream:: { Offset as _, Stream as _} ,
99 token:: { one_of, take_till, take_while} ,
@@ -78,7 +78,7 @@ fn newlines_from(input: &[u8], start: winnow::stream::Checkpoint<&[u8], &[u8]>)
7878 start_input. next_slice ( offset) . iter ( ) . filter ( |c| * * c == b'\n' ) . count ( )
7979}
8080
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 ] > > {
8282 (
8383 one_of ( [ ';' , '#' ] ) ,
8484 take_till ( 0 .., |c| c == b'\n' ) . map ( |text : & [ u8 ] | Cow :: Borrowed ( text. as_bstr ( ) ) ) ,
@@ -94,7 +94,7 @@ fn section<'i>(
9494 i : & mut & ' i [ u8 ] ,
9595 node : & mut ParseNode ,
9696 dispatch : & mut dyn FnMut ( Event < ' i > ) ,
97- ) -> PResult < ( ) , NomError < & ' i [ u8 ] > > {
97+ ) -> ModalResult < ( ) , NomError < & ' i [ u8 ] > > {
9898 let start = i. checkpoint ( ) ;
9999 let header = section_header ( i) . map_err ( |e| {
100100 i. reset ( & start) ;
@@ -129,7 +129,7 @@ fn section<'i>(
129129 Ok ( ( ) )
130130}
131131
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 ] > > {
133133 // No spaces must be between section name and section start
134134 let name = preceded ( '[' , take_while ( 1 .., is_section_char) . map ( bstr:: ByteSlice :: as_bstr) ) . parse_next ( i) ?;
135135
@@ -150,7 +150,7 @@ fn section_header<'i>(i: &mut &'i [u8]) -> PResult<section::Header<'i>, NomError
150150 } ;
151151
152152 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 ) ) ;
154154 }
155155 return Ok ( header) ;
156156 }
@@ -169,7 +169,7 @@ fn is_section_char(c: u8) -> bool {
169169 c. is_ascii_alphanumeric ( ) || c == b'-' || c == b'.'
170170}
171171
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 ] > > {
173173 let mut output = Cow :: Borrowed ( Default :: default ( ) ) ;
174174 if let Some ( sub) = opt ( subsection_subset) . parse_next ( i) ? {
175175 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]
181181 Ok ( output)
182182}
183183
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 ] > > {
185185 alt ( ( subsection_unescaped, subsection_escaped_char) ) . parse_next ( i)
186186}
187187
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 ] > > {
189189 take_while ( 1 .., is_subsection_unescaped_char) . parse_next ( i)
190190}
191191
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 ] > > {
193193 preceded ( '\\' , one_of ( is_subsection_escapable_char) . take ( ) ) . parse_next ( i)
194194}
195195
@@ -205,7 +205,7 @@ fn key_value_pair<'i>(
205205 i : & mut & ' i [ u8 ] ,
206206 node : & mut ParseNode ,
207207 dispatch : & mut dyn FnMut ( Event < ' i > ) ,
208- ) -> PResult < ( ) , NomError < & ' i [ u8 ] > > {
208+ ) -> ModalResult < ( ) , NomError < & ' i [ u8 ] > > {
209209 * node = ParseNode :: Name ;
210210 if let Some ( name) = opt ( config_name) . parse_next ( i) ? {
211211 dispatch ( Event :: SectionValueName ( section:: ValueName ( Cow :: Borrowed ( name) ) ) ) ;
@@ -223,7 +223,7 @@ fn key_value_pair<'i>(
223223
224224/// Parses the config name of a config pair. Assumes the input has already been
225225/// 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 ] > > {
227227 (
228228 one_of ( |c : u8 | c. is_ascii_alphabetic ( ) ) ,
229229 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]>> {
233233 . parse_next ( i)
234234}
235235
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 ] > > {
237237 if opt ( '=' ) . parse_next ( i) ?. is_some ( ) {
238238 dispatch ( Event :: KeyValueSeparator ) ;
239239 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
251251
252252/// Handles parsing of known-to-be values. This function handles both single
253253/// 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 ] > > {
255255 let start_checkpoint = i. checkpoint ( ) ;
256256 let mut value_start_checkpoint = i. checkpoint ( ) ;
257257 let mut value_end = None ;
@@ -278,17 +278,17 @@ fn value_impl<'i>(i: &mut &'i [u8], dispatch: &mut dyn FnMut(Event<'i>)) -> PRes
278278 let escape_index = escaped_index - 1 ;
279279 let Some ( mut c) = i. next_token ( ) else {
280280 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 ) ) ;
282282 } ;
283283 let mut consumed = 1 ;
284284 if c == b'\r' {
285285 c = i. next_token ( ) . ok_or_else ( || {
286286 i. reset ( & start_checkpoint) ;
287- winnow:: error:: ErrMode :: from_error_kind ( i , ErrorKind :: Token )
287+ winnow:: error:: ErrMode :: from_input ( i )
288288 } ) ?;
289289 if c != b'\n' {
290290 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 ) ) ;
292292 }
293293 consumed += 1 ;
294294 }
@@ -313,7 +313,7 @@ fn value_impl<'i>(i: &mut &'i [u8], dispatch: &mut dyn FnMut(Event<'i>)) -> PRes
313313 b'n' | b't' | b'\\' | b'b' | b'"' => { }
314314 _ => {
315315 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 ) ) ;
317317 }
318318 }
319319 }
@@ -326,7 +326,7 @@ fn value_impl<'i>(i: &mut &'i [u8], dispatch: &mut dyn FnMut(Event<'i>)) -> PRes
326326 }
327327 if is_in_quotes {
328328 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 ) ) ;
330330 }
331331
332332 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
360360 Ok ( ( ) )
361361}
362362
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 ] > > {
364364 take_while ( 1 .., winnow:: stream:: AsChar :: is_space)
365365 . map ( bstr:: ByteSlice :: as_bstr)
366366 . parse_next ( i)
367367}
368368
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 ] > > {
370370 repeat ( 1 ..1024 , alt ( ( "\r \n " , "\n " ) ) )
371371 . map ( |( ) | ( ) )
372372 . take ( )
0 commit comments