diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index a6b430c..31d280c 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -10,6 +10,8 @@ === Fixed +- fix parsing CRLF + == [v1.0.0] - 2023-03-10 === Added diff --git a/src/parser.rs b/src/parser.rs index 7b3bdd2..573d1ce 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -39,7 +39,9 @@ fn null(input: Span) -> IResult { } fn separator(input: Span) -> IResult { - map(alt((tag(","), tag("\n"))), |val: Span| *val.fragment())(input) + map(alt((tag(","), tag("\n"), tag("\r\n"))), |val: Span| { + *val.fragment() + })(input) } fn bool(input: Span) -> IResult { @@ -436,4 +438,21 @@ packages = [ let sjson = format!(r#""{}""#, text); check_parse_result(sjson, [Token::String(String::from(text))]); } + + // Regression test for #10 + #[test] + fn parse_crlf_separator() { + let sjson = "foo = 1\r\nbar = 2"; + check_parse_result( + sjson, + [ + Token::String(String::from("foo")), + Token::Equals, + Token::Integer(1), + Token::String(String::from("bar")), + Token::Equals, + Token::Integer(2), + ], + ); + } }