summaryrefslogtreecommitdiffstats
path: root/categories/src/categories.rs
diff options
context:
space:
mode:
Diffstat (limited to 'categories/src/categories.rs')
-rw-r--r--categories/src/categories.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/categories/src/categories.rs b/categories/src/categories.rs
index e03353d..3baba6c 100644
--- a/categories/src/categories.rs
+++ b/categories/src/categories.rs
@@ -60,7 +60,8 @@ impl Categories {
})
}
- pub fn from_slug<S: AsRef<str>>(&self, slug: S) -> impl Iterator<Item = &Category> {
+ /// true if full match
+ pub fn from_slug<S: AsRef<str>>(&self, slug: S) -> (Vec<&Category>, bool) {
let mut out = Vec::new();
let mut cats = &self.root;
for name in slug.as_ref().split("::") {
@@ -69,10 +70,10 @@ impl Categories {
cats = &cat.sub;
out.push(cat);
},
- None => break,
+ None => return (out, false),
}
}
- out.into_iter()
+ (out, true)
}
fn categories_from_table(full_slug_start: &str, toml: Table) -> CResult<CategoryMap> {
@@ -156,7 +157,7 @@ impl Categories {
Some((depth, idx, Cow::Borrowed(s)))
})
.filter(|(_, _, s)| {
- if CATEGORIES.from_slug(s).next().is_none() {
+ if !CATEGORIES.from_slug(s).1 {
println!("invalid cat name {}", s);
return false;
}