@@ -2,7 +2,7 @@ use crate::mode::Mode;
22use crate :: params:: is_hit;
33use crate :: ClinkConfig ;
44use chrono:: prelude:: * ;
5- use linkify:: { LinkFinder , LinkKind } ;
5+ use linkify:: LinkFinder ;
66use rand:: Rng ;
77use std:: { collections:: HashMap , path:: PathBuf } ;
88use url:: Url ;
@@ -11,14 +11,19 @@ use url::Url;
1111mod 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\n https://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\n https://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\n https://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 \n and 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 \n and 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 \n and 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