diff options
author | Canop <cano.petrole@gmail.com> | 2020-09-29 14:16:46 +0200 |
---|---|---|
committer | Canop <cano.petrole@gmail.com> | 2020-09-29 14:16:46 +0200 |
commit | 46316405917f92e622cdb6e0b29dd769afb65206 (patch) | |
tree | d4445fa2ee212be1401461480555d01b48d77326 /src/pattern | |
parent | daf4d13ca899675da6b4b31f4b638bae43f0a9ec (diff) |
list of verbs is now searchable
Diffstat (limited to 'src/pattern')
-rw-r--r-- | src/pattern/name_match.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/pattern/name_match.rs b/src/pattern/name_match.rs index cbb2b0a..91a2238 100644 --- a/src/pattern/name_match.rs +++ b/src/pattern/name_match.rs @@ -7,3 +7,28 @@ pub struct NameMatch { pub pos: Vec<usize>, // positions of the matching chars } +impl NameMatch { + pub fn wrap(&self, name: &str, match_start: &str, match_end: &str) -> String { + let mut result = String::new(); + let mut index_in_pos = 0; + let mut wrapped = false; + for (idx, c) in name.chars().enumerate() { + if index_in_pos<self.pos.len() && self.pos[index_in_pos]==idx { + index_in_pos += 1; + if !wrapped { + result.push_str(match_start); + wrapped = true; + } + } else if wrapped { + result.push_str(match_end); + wrapped = false; + } + result.push(c); + } + if wrapped { + result.push_str(match_end); + } + result + } +} + |