diff options
| author | John Turner <jturner.usa@gmail.com> | 2025-10-24 21:32:41 -0400 |
|---|---|---|
| committer | John Turner <jturner.usa@gmail.com> | 2025-10-24 21:32:41 -0400 |
| commit | d75266f9677121d2d92065204aaae400fecd3e2b (patch) | |
| tree | 423330ab9fe7334897950ccaa538aa92f57712ff | |
| parent | 5967d6945337fa17aa6054ac2e93de287e9cd0ff (diff) | |
| download | gentoo-utils-d75266f9677121d2d92065204aaae400fecd3e2b.tar.gz | |
support atoms with empty slot
| -rw-r--r-- | src/atom/mod.rs | 2 | ||||
| -rw-r--r-- | src/atom/parsers.rs | 9 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/atom/mod.rs b/src/atom/mod.rs index f5884bc..07ccd0f 100644 --- a/src/atom/mod.rs +++ b/src/atom/mod.rs @@ -63,7 +63,7 @@ pub struct SlotName(#[get(method = "name")] String); #[derive(Clone, Debug, PartialEq, Eq, Get)] pub struct Slot { - slot: SlotName, + slot: Option<SlotName>, sub: Option<SlotName>, operator: Option<SlotOperator>, } diff --git a/src/atom/parsers.rs b/src/atom/parsers.rs index 4bc27ce..65cce04 100644 --- a/src/atom/parsers.rs +++ b/src/atom/parsers.rs @@ -112,7 +112,7 @@ pub fn slotname<'a>() -> impl Parser<&'a str, Output = SlotName> { } pub fn slot<'a>() -> impl Parser<&'a str, Output = Slot> { - slotname() + opt(slotname()) .and(opt(slotname().preceded_by(tag("/")))) .and(opt(slot_operator())) .map(|((slot, sub), operator)| Slot { @@ -273,4 +273,11 @@ mod test { assert!(atom().check_finished(it).is_err()) } + + #[test] + fn test_empty_slot() { + let it = InputIter::new("foo/bar-1.0.0:="); + + atom().check_finished(it).unwrap(); + } } |
