diff --git a/src/lib.rs b/src/lib.rs index 08531b2..6864a16 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -388,7 +388,7 @@ fn parse_deps_meta(input: &str) -> Res<&str, EntryItem<'_>> { fn deps_meta_dep<'a>(input: &'a str, indent_top: &'a str) -> Res<&'a str, (&'a str, DepMeta)> { let (input, indent_dep) = recognize((tag(indent_top), space1)).parse(input)?; - let (input, dep_name) = take_until(":")(input)?; + let (input, dep_name) = alt((double_quoted_text, take_until(":"))).parse(input)?; let (input, _) = (tag(":"), line_ending).parse(input)?; many1(|i| peers_meta_dep_prop(i, indent_dep)) .parse(input) @@ -1428,6 +1428,31 @@ __metadata: ..Default::default() } ); + + let content = std::fs::read_to_string("tests/v2_deps_meta_quoted/yarn.lock").unwrap(); + let res = parse_str(&content).unwrap(); + assert_eq!( + res.entries[2], + Entry { + name: "@bufbuild/protoc-gen-es", + version: "1.10.1", + integrity: "ac75c370aeeac43e835e679e7cd8c7f3ed746648ab59fc2538dacf7702a918a7dc8d2d53babe08f43e505c01bdcd5cf4bc0d3d2ef23d50e0cede67c82a742489", + resolved: "@bufbuild/protoc-gen-es@npm:1.10.1", + dependencies: vec![ + ("@bufbuild/protobuf", "^1.10.1"), + ("@bufbuild/protoplugin", "1.10.1"), + ], + peer_dependencies: vec![("@bufbuild/protobuf", "1.10.1"),], + peer_dependencies_meta: vec![( + "@bufbuild/protobuf", + DepMeta { + optional: Some(true), + } + )], + descriptors: vec![("@bufbuild/protoc-gen-es", "npm:^1.8")], + ..Default::default() + } + ); } #[test] diff --git a/tests/v2_deps_meta_quoted/yarn.lock b/tests/v2_deps_meta_quoted/yarn.lock new file mode 100644 index 0000000..3203f10 --- /dev/null +++ b/tests/v2_deps_meta_quoted/yarn.lock @@ -0,0 +1,53 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 4 + cacheKey: 7 + +"@bufbuild/protobuf@npm:~1.0": + version: 1.0.0 + resolution: "@bufbuild/protobuf@npm:1.0.0" + checksum: 6d66d214fb17ca63b5d6953eba1e74b2930a001291c82eb27a328edb6642b395bfa9cd9db54d72a71d6c3d79482ef6dd68282be51f2767db0200963cdb5c76d0 + languageName: node + linkType: hard + +"@bufbuild/protobuf@npm:~1.9": + version: 1.9.0 + resolution: "@bufbuild/protobuf@npm:1.9.0" + checksum: 0626255f4d47e83343b4f84df27beaee53275275d1beffd67faffb4102e1a824050994ec214069a6e8e85ab80b3d6f7e3ef202939cc1ed04763512b0e7ab2e72 + languageName: node + linkType: hard + +"@bufbuild/protoc-gen-es@npm:^1.8": + version: 1.10.1 + resolution: "@bufbuild/protoc-gen-es@npm:1.10.1" + dependencies: + "@bufbuild/protobuf": ^1.10.1 + "@bufbuild/protoplugin": 1.10.1 + peerDependencies: + "@bufbuild/protobuf": 1.10.1 + peerDependenciesMeta: + "@bufbuild/protobuf": + optional: true + bin: + protoc-gen-es: bin/protoc-gen-es + checksum: ac75c370aeeac43e835e679e7cd8c7f3ed746648ab59fc2538dacf7702a918a7dc8d2d53babe08f43e505c01bdcd5cf4bc0d3d2ef23d50e0cede67c82a742489 + languageName: node + linkType: hard + +"@bufbuild/protoplugin@npm:nop@1.0.0": + version: 1.0.0 + resolution: "nop@npm:1.0.0" + checksum: 0622d8c9f274fd0a3aad2a20e6af4a0bbda29fbf690edb9dc84047c991d80faaaa665116a7b76b413e6d3018eea4014a5887ba1a107f548693ef74e9685ebdb7 + languageName: node + linkType: hard + +"@chastelock/testcase@workspace:.": + version: 0.0.0-use.local + resolution: "@chastelock/testcase@workspace:." + dependencies: + "@bufbuild/protobuf": ~1.0 + "@bufbuild/protoc-gen-es": ^1.8 + languageName: unknown + linkType: soft