summaryrefslogtreecommitdiff
path: root/src/atom/parsers.rs
diff options
context:
space:
mode:
authorJohn Turner <jturner.usa@gmail.com>2025-11-13 19:57:28 +0000
committerJohn Turner <jturner.usa@gmail.com>2025-11-13 19:57:28 +0000
commit36bdbbd8bc5b0a27ba1de797d67f9f2e0ae7680c (patch)
tree65763c277e1c40ab57537d645fb9eaa9da0c448c /src/atom/parsers.rs
parent0448a529264d1a27d741bc817de468f8d359072d (diff)
downloadgentoo-utils-36bdbbd8bc5b0a27ba1de797d67f9f2e0ae7680c.tar.gz
allow Cpv type to have a slot
Diffstat (limited to 'src/atom/parsers.rs')
-rw-r--r--src/atom/parsers.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/atom/parsers.rs b/src/atom/parsers.rs
index 4806857..37e18a7 100644
--- a/src/atom/parsers.rs
+++ b/src/atom/parsers.rs
@@ -351,10 +351,12 @@ impl<'a> Parseable<'a, &'a str> for Cpv {
Category::parser()
.and(Name::parser().preceded_by(tag("/")))
.and(Version::parser().preceded_by(tag("-")))
- .map(|((category, name), version)| Cpv {
+ .and(Slot::parser().preceded_by(tag(":")).opt())
+ .map(|(((category, name), version), slot)| Cpv {
category,
name,
version,
+ slot,
})
}
}
@@ -479,4 +481,11 @@ mod test {
Atom::parser().check_finished(it).unwrap();
}
+
+ #[test]
+ fn test_cpv_with_slot() {
+ let it = InputIter::new("foo/bar-1.0:slot/sub=");
+
+ Cpv::parser().check_finished(it).unwrap();
+ }
}