|
77 | 77 | many1(digit()) |
78 | 78 | } |
79 | 79 |
|
80 | | -fn parsed_digits<I>() -> impl Parser<I, Output = u64> |
81 | | -where |
82 | | - I: Stream<Token = char>, |
83 | | - I::Error: ParseError<I::Token, I::Range, I::Position>, |
84 | | -{ |
85 | | - digits().and_then(|x| x.parse::<u64>().map_err(StreamErrorFor::<I>::other)) |
86 | | -} |
87 | | - |
88 | 80 | fn leading_zeros<I>() -> impl Parser<I, Output = (usize, u64)> |
89 | 81 | where |
90 | 82 | I: Stream<Token = char>, |
@@ -156,7 +148,7 @@ where |
156 | 148 |
|
157 | 149 | sep_by1( |
158 | 150 | optional_spaces() |
159 | | - .with(parsed_digits()) |
| 151 | + .with(leading_zeros()) |
160 | 152 | .skip(optional_spaces()), |
161 | 153 | attempt(comma().skip(not_name)), |
162 | 154 | ) |
@@ -285,6 +277,7 @@ mod tests { |
285 | 277 | fn test_disjoint_digits() { |
286 | 278 | assert_debug_snapshot!(disjoint_digits().easy_parse("1,2,3,4,5]")); |
287 | 279 | assert_debug_snapshot!(disjoint_digits().easy_parse("1,2,3-5")); |
| 280 | + assert_debug_snapshot!(disjoint_digits().easy_parse("1,2,006,0007,3-5")); |
288 | 281 | } |
289 | 282 |
|
290 | 283 | #[test] |
@@ -484,4 +477,10 @@ mod tests { |
484 | 477 | parse("hostname]00[asdf") |
485 | 478 | ); |
486 | 479 | } |
| 480 | + |
| 481 | + #[test] |
| 482 | + |
| 483 | + fn test_parse_osts() { |
| 484 | + assert_debug_snapshot!("Leading 0s", parse("OST01[00,01]")); |
| 485 | + } |
487 | 486 | } |
0 commit comments