Skip to content

Commit 227e5a1

Browse files
author
Sergey Bargamon
committed
move creation of a finder outside the loop
1 parent cb9444a commit 227e5a1

File tree

2 files changed

+60
-19
lines changed

2 files changed

+60
-19
lines changed

src/main.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,15 @@ use clipboard::{ClipboardContext, ClipboardProvider};
1010
use dirs_next::config_dir;
1111
use rustop::opts;
1212
use serde::{Deserialize, Serialize};
13-
use toml;
1413

1514
use std::{
1615
path::{Path, PathBuf},
1716
process, thread,
1817
time::Duration,
1918
};
2019

20+
use linkify::{LinkFinder, LinkKind};
21+
2122
#[derive(Serialize, Deserialize, Debug)]
2223
pub struct ClinkConfig {
2324
mode: Mode,
@@ -81,11 +82,14 @@ fn main() -> Result<(), confy::ConfyError> {
8182
let mut ctx: ClipboardContext = ClipboardProvider::new().unwrap();
8283
let mut previous_clipboard = "".to_string();
8384
let index = create_index(&cfg.params);
85+
let mut finder = LinkFinder::new();
86+
finder.kinds(&[LinkKind::Url]);
87+
8488
loop {
8589
match ctx.get_contents() {
8690
Ok(current_clipboard) => {
8791
if previous_clipboard != current_clipboard {
88-
let cleaned = find_and_replace(&current_clipboard, &cfg, &index);
92+
let cleaned = find_and_replace(&current_clipboard, &cfg, &index, &finder);
8993
if cleaned != current_clipboard {
9094
ctx.set_contents(cleaned.clone()).unwrap();
9195
}

src/utils.rs

Lines changed: 54 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::mode::Mode;
22
use crate::params::is_hit;
33
use crate::ClinkConfig;
44
use chrono::prelude::*;
5-
use linkify::{LinkFinder, LinkKind};
5+
use linkify::LinkFinder;
66
use rand::Rng;
77
use std::{collections::HashMap, path::PathBuf};
88
use url::Url;
@@ -11,14 +11,19 @@ use url::Url;
1111
mod find_and_replace {
1212
use super::*;
1313
use crate::params::{create_index, get_default_params};
14+
use linkify::{LinkFinder, LinkKind};
1415

1516
#[test]
1617
fn naive() {
18+
let mut finder = LinkFinder::new();
19+
finder.kinds(&[LinkKind::Url]);
20+
1721
assert_eq!(
1822
find_and_replace(
1923
"https://test.test/?fbclid=dsadsa&utm_source=fafa&utm_campaign=fafas&utm_medium=adsa",
2024
&ClinkConfig::default(),
21-
&create_index(&get_default_params())
25+
&create_index(&get_default_params()),
26+
&finder
2227
),
2328
"https://test.test/"
2429
);
@@ -31,7 +36,8 @@ mod find_and_replace {
3136
sleep_duration: 150,
3237
params: get_default_params()
3338
},
34-
&create_index(&get_default_params())
39+
&create_index(&get_default_params()),
40+
&finder
3541
),
3642
"https://test.test/?utm_source=your_mom"
3743
);
@@ -44,18 +50,22 @@ mod find_and_replace {
4450
sleep_duration: 150,
4551
params: get_default_params()
4652
},
47-
&create_index(&get_default_params())
53+
&create_index(&get_default_params()),
54+
&finder
4855
),
4956
"https://test.test/?fbclid=IwAR3l6qn8TzOT254dIa7jBAM1dG3OHn3f8ZoRGsADTmqG1Zfmmko-oRhE8Qs&utm_source=IwAR3l6qn8TzOT254dIa7jBAM1dG3OHn3f8ZoRGsADTmqG1Zfmmko-oRhE8Qs&utm_campaign=IwAR3l6qn8TzOT254dIa7jBAM1dG3OHn3f8ZoRGsADTmqG1Zfmmko-oRhE8Qs&utm_medium=IwAR3l6qn8TzOT254dIa7jBAM1dG3OHn3f8ZoRGsADTmqG1Zfmmko-oRhE8Qs"
5057
);
5158
}
5259
#[test]
5360
fn should_preserve_query() {
61+
let mut finder = LinkFinder::new();
62+
finder.kinds(&[LinkKind::Url]);
5463
assert_eq!(
5564
find_and_replace(
5665
"https://test.test/?abc=abc",
5766
&ClinkConfig::default(),
58-
&create_index(&get_default_params())
67+
&create_index(&get_default_params()),
68+
&finder
5969
),
6070
"https://test.test/?abc=abc"
6171
);
@@ -68,18 +78,23 @@ mod find_and_replace {
6878
sleep_duration: 150,
6979
params: get_default_params()
7080
},
71-
&create_index(&get_default_params())
81+
&create_index(&get_default_params()),
82+
&finder
7283
),
7384
"https://test.test/?abc=abc&utm_source=your_mom"
7485
);
7586
}
7687
#[test]
7788
fn multiple_params() {
89+
let mut finder = LinkFinder::new();
90+
finder.kinds(&[LinkKind::Url]);
91+
7892
assert_eq!(
7993
find_and_replace(
8094
"https://test.test/?abc=abc&fbclid=flksj",
8195
&ClinkConfig::default(),
82-
&create_index(&get_default_params())
96+
&create_index(&get_default_params()),
97+
&finder
8398
),
8499
"https://test.test/?abc=abc"
85100
);
@@ -92,18 +107,23 @@ mod find_and_replace {
92107
sleep_duration: 150,
93108
params: get_default_params()
94109
},
95-
&create_index(&get_default_params())
110+
&create_index(&get_default_params()),
111+
&finder
96112
),
97113
"https://test.test/?abc=abc&utm_source=your_mom"
98114
);
99115
}
100116
#[test]
101117
fn multiple_links() {
118+
let mut finder = LinkFinder::new();
119+
finder.kinds(&[LinkKind::Url]);
120+
102121
assert_eq!(
103122
find_and_replace(
104123
"https://test.test/?abc=abc&fbclid=flksj\nhttps://test.test/?abc=abc&fbclid=flksj",
105124
&ClinkConfig::default(),
106-
&create_index(&get_default_params())
125+
&create_index(&get_default_params()),
126+
&finder
107127
),
108128
"https://test.test/?abc=abc\nhttps://test.test/?abc=abc"
109129
);
@@ -116,18 +136,23 @@ mod find_and_replace {
116136
sleep_duration: 150,
117137
params: get_default_params()
118138
},
119-
&create_index(&get_default_params())
139+
&create_index(&get_default_params()),
140+
&finder
120141
),
121142
"https://test.test/?abc=abc&utm_source=your_mom\nhttps://test.test/?abc=abc&utm_source=your_mom"
122143
);
123144
}
124145
#[test]
125146
fn multiple_links_and_text() {
147+
let mut finder = LinkFinder::new();
148+
finder.kinds(&[LinkKind::Url]);
149+
126150
assert_eq!(
127151
find_and_replace(
128152
"some text here https://test.test/?abc=abc&fbclid=flksj here \nand herehttps://test.test/?abc=abc&fbclid=flksj",
129153
&ClinkConfig::default(),
130-
&create_index(&get_default_params())
154+
&create_index(&get_default_params()),
155+
&finder
131156
),
132157
"some text here https://test.test/?abc=abc here \nand herehttps://test.test/?abc=abc"
133158
);
@@ -140,13 +165,17 @@ mod find_and_replace {
140165
sleep_duration: 150,
141166
params: get_default_params()
142167
},
143-
&create_index(&get_default_params())
168+
&create_index(&get_default_params()),
169+
&finder
144170
),
145171
"some text here https://test.test/?abc=abc&utm_source=your_mom here \nand herehttps://test.test/?abc=abc&utm_source=your_mom"
146172
);
147173
}
148174
#[test]
149175
fn replace() {
176+
let mut finder = LinkFinder::new();
177+
finder.kinds(&[LinkKind::Url]);
178+
150179
assert_eq!(
151180
find_and_replace(
152181
"https://test.test/?fbclid=dsadsa&utm_source=fafa&utm_campaign=fafas&utm_medium=adsa",
@@ -156,14 +185,18 @@ mod find_and_replace {
156185
sleep_duration: 150,
157186
params: get_default_params()
158187
},
159-
&create_index(&get_default_params())
188+
&create_index(&get_default_params()),
189+
&finder
160190
),
161191
"https://test.test/?fbclid=foo&utm_source=foo&utm_campaign=foo&utm_medium=foo"
162192
);
163193
}
164194

165195
#[test]
166196
fn custom_params() {
197+
let mut finder = LinkFinder::new();
198+
finder.kinds(&[LinkKind::Url]);
199+
167200
assert_eq!(
168201
find_and_replace(
169202
"https://test.test/?foo=dsadsa",
@@ -173,16 +206,20 @@ mod find_and_replace {
173206
sleep_duration: 150,
174207
params: vec!["foo".to_string()]
175208
},
176-
&create_index(&vec!["foo".to_string()])
209+
&create_index(&vec!["foo".to_string()]),
210+
&finder
177211
),
178212
"https://test.test/?foo=your_mom"
179213
);
180214
}
181215
}
182216

183-
pub fn find_and_replace(str: &str, config: &ClinkConfig, index: &HashMap<String, bool>) -> String {
184-
let mut finder = LinkFinder::new();
185-
finder.kinds(&[LinkKind::Url]);
217+
pub fn find_and_replace(
218+
str: &str,
219+
config: &ClinkConfig,
220+
index: &HashMap<String, bool>,
221+
finder: &LinkFinder,
222+
) -> String {
186223
let mut res = str.to_string();
187224
for link in finder.links(str) {
188225
let l = Url::parse(link.as_str()).unwrap();

0 commit comments

Comments
 (0)