diff --git a/Cargo.lock b/Cargo.lock index 064f187..44ee507 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -52,6 +52,12 @@ dependencies = [ "rustc_version", ] +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + [[package]] name = "cfg-if" version = "1.0.0" @@ -60,7 +66,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cirru_parser" -version = "0.1.23" +version = "0.1.24" dependencies = [ "criterion", "serde", @@ -69,9 +75,9 @@ dependencies = [ [[package]] name = "clap" -version = "2.33.3" +version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "bitflags", "textwrap", @@ -80,12 +86,12 @@ dependencies = [ [[package]] name = "criterion" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10" +checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" dependencies = [ "atty", - "cast", + "cast 0.3.0", "clap", "criterion-plot", "csv", @@ -110,7 +116,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57" dependencies = [ - "cast", + "cast 0.2.7", "itertools", ] @@ -422,9 +428,9 @@ checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" [[package]] name = "serde" -version = "1.0.137" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" +checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" [[package]] name = "serde_cbor" @@ -449,9 +455,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.81" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" +checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44" dependencies = [ "itoa 1.0.1", "ryu", diff --git a/Cargo.toml b/Cargo.toml index 0ed9161..58ef4c5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cirru_parser" -version = "0.1.23" +version = "0.1.24" authors = ["jiyinyiyong "] edition = "2021" license = "MIT" @@ -28,11 +28,11 @@ use-serde = ["serde", "serde_json"] # ['cfg(features = "use-serde")'.dependencies] [dependencies] -serde = { version = "1.0.137", optional = true } -serde_json = { version = "1.0.81", optional = true } +serde = { version = "1.0.144", optional = true } +serde_json = { version = "1.0.85", optional = true } [dev-dependencies] -criterion = "0.3.5" +criterion = "0.3.6" [lib] name = "cirru_parser" diff --git a/src/parser.rs b/src/parser.rs index 87404a1..9abfb54 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -216,6 +216,10 @@ pub fn lex(initial_code: &str) -> Result { state = CirruLexState::Str; buffer.push('\n'); } + 'r' => { + state = CirruLexState::Str; + buffer.push('\r'); + } 'u' => { // not supporting, but don't panic let end = idx + 10; diff --git a/tests/parser_test.rs b/tests/parser_test.rs index 375a905..c89dc9e 100644 --- a/tests/parser_test.rs +++ b/tests/parser_test.rs @@ -18,6 +18,8 @@ mod json_test { Ok(Cirru::List(vec!(vec!["a"].into(), vec!["b"].into()))) ); + assert_eq!(parse("a\rb").map(Cirru::List), Ok(Cirru::List(vec!(vec!["a\rb"].into())))); + assert_eq!( parse("a (b) c").map(Cirru::List), Ok(Cirru::List(vec![vec![Cirru::leaf("a"), vec!["b"].into(), "c".into()].into()]))