mirror of
https://github.com/FliegendeWurst/tmux-thumbs.git
synced 2024-11-22 21:05:00 +00:00
Register matched pattern
This commit is contained in:
parent
8491dd0e14
commit
cc831fd10f
11
src/state.rs
11
src/state.rs
@ -28,6 +28,7 @@ const PATTERNS: [(&'static str, &'static str); 10] = [
|
|||||||
pub struct Match<'a> {
|
pub struct Match<'a> {
|
||||||
pub x: i32,
|
pub x: i32,
|
||||||
pub y: i32,
|
pub y: i32,
|
||||||
|
pub pattern: &'a str,
|
||||||
pub text: &'a str,
|
pub text: &'a str,
|
||||||
pub hint: Option<String>,
|
pub hint: Option<String>,
|
||||||
}
|
}
|
||||||
@ -36,9 +37,10 @@ impl<'a> fmt::Debug for Match<'a> {
|
|||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
write!(
|
write!(
|
||||||
f,
|
f,
|
||||||
"Match {{ x: {}, y: {}, text: {}, hint: <{}> }}",
|
"Match {{ x: {}, y: {}, pattern: {}, text: {}, hint: <{}> }}",
|
||||||
self.x,
|
self.x,
|
||||||
self.y,
|
self.y,
|
||||||
|
self.pattern,
|
||||||
self.text,
|
self.text,
|
||||||
self.hint.clone().unwrap_or("<undefined>".to_string())
|
self.hint.clone().unwrap_or("<undefined>".to_string())
|
||||||
)
|
)
|
||||||
@ -119,6 +121,7 @@ impl<'a> State<'a> {
|
|||||||
matches.push(Match {
|
matches.push(Match {
|
||||||
x: offset + matching.start() as i32 + substart as i32,
|
x: offset + matching.start() as i32 + substart as i32,
|
||||||
y: index as i32,
|
y: index as i32,
|
||||||
|
pattern: name,
|
||||||
text: subtext,
|
text: subtext,
|
||||||
hint: None,
|
hint: None,
|
||||||
});
|
});
|
||||||
@ -260,15 +263,19 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn match_urls() {
|
fn match_urls() {
|
||||||
let lines = split("Lorem ipsum https://www.rust-lang.org/tools lorem\n Lorem https://crates.io lorem https://github.io?foo=bar lorem ssh://github.io");
|
let lines = split("Lorem ipsum https://www.rust-lang.org/tools lorem\n Lorem ipsumhttps://crates.io lorem https://github.io?foo=bar lorem ssh://github.io");
|
||||||
let custom = [].to_vec();
|
let custom = [].to_vec();
|
||||||
let results = State::new(&lines, "abcd", &custom).matches(false, false);
|
let results = State::new(&lines, "abcd", &custom).matches(false, false);
|
||||||
|
|
||||||
assert_eq!(results.len(), 4);
|
assert_eq!(results.len(), 4);
|
||||||
assert_eq!(results.get(0).unwrap().text.clone(), "https://www.rust-lang.org/tools");
|
assert_eq!(results.get(0).unwrap().text.clone(), "https://www.rust-lang.org/tools");
|
||||||
|
assert_eq!(results.get(0).unwrap().pattern.clone(), "url");
|
||||||
assert_eq!(results.get(1).unwrap().text.clone(), "https://crates.io");
|
assert_eq!(results.get(1).unwrap().text.clone(), "https://crates.io");
|
||||||
|
assert_eq!(results.get(1).unwrap().pattern.clone(), "url");
|
||||||
assert_eq!(results.get(2).unwrap().text.clone(), "https://github.io?foo=bar");
|
assert_eq!(results.get(2).unwrap().text.clone(), "https://github.io?foo=bar");
|
||||||
|
assert_eq!(results.get(2).unwrap().pattern.clone(), "url");
|
||||||
assert_eq!(results.get(3).unwrap().text.clone(), "ssh://github.io");
|
assert_eq!(results.get(3).unwrap().text.clone(), "ssh://github.io");
|
||||||
|
assert_eq!(results.get(3).unwrap().pattern.clone(), "url");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
Loading…
Reference in New Issue
Block a user