renamer_rs/processor/
selector.rs1use regex::Regex;
2
3#[derive(Debug, Clone)]
5pub struct Selector {
6 #[allow(unused)]
7 name: Option<String>, pattern: Regex,
9}
10
11impl Selector {
12 pub fn new(name: Option<String>, pattern: Regex) -> Self {
14 Self { name, pattern }
15 }
16
17 pub fn is_match<S: AsRef<str>>(&self, segment: S) -> bool {
19 self.pattern.is_match(segment.as_ref())
20 }
21
22 pub fn match_segment<S: AsRef<str>>(&self, segments: &[S]) -> Option<String> {
24 segments
25 .iter()
26 .position(|s| self.is_match(s))
27 .map(|i| segments[i].as_ref().into())
28 }
29}