summaryrefslogtreecommitdiffstats
path: root/src/pattern
diff options
context:
space:
mode:
authorCanop <cano.petrole@gmail.com>2020-09-29 14:16:46 +0200
committerCanop <cano.petrole@gmail.com>2020-09-29 14:16:46 +0200
commit46316405917f92e622cdb6e0b29dd769afb65206 (patch)
treed4445fa2ee212be1401461480555d01b48d77326 /src/pattern
parentdaf4d13ca899675da6b4b31f4b638bae43f0a9ec (diff)
list of verbs is now searchable
Diffstat (limited to 'src/pattern')
-rw-r--r--src/pattern/name_match.rs25
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
+ }
+}
+