1+ use std:: borrow:: Cow ;
12use std:: str;
2- use typed_arena:: Arena ;
33use unicode_categories:: UnicodeCategories ;
44
55use crate :: character_set:: character_set;
66use crate :: ctype:: { isalnum, isalpha, isspace} ;
7- use crate :: nodes:: { AstNode , Node , NodeLink , NodeValue , Sourcepos } ;
8- use crate :: parser:: inlines:: Subject ;
9- use crate :: parser:: { inlines:: make_inline, Spx } ;
7+ use crate :: nodes:: { Node , NodeLink , NodeValue , Sourcepos } ;
8+ use crate :: parser:: inlines:: { make_inline, Subject } ;
9+ use crate :: parser:: Spx ;
10+ use crate :: Arena ;
1011
1112pub ( crate ) fn process_email_autolinks < ' a > (
12- arena : & ' a Arena < AstNode < ' a > > ,
13+ arena : & ' a Arena < ' a > ,
1314 node : Node < ' a > ,
14- contents : & mut String ,
15+ contents : & mut Cow < ' static , str > ,
1516 relaxed_autolinks : bool ,
1617 sourcepos : & mut Sourcepos ,
1718 spx : & mut Spx ,
@@ -69,7 +70,7 @@ pub(crate) fn process_email_autolinks<'a>(
6970
7071 let nsp_end_col = spx. consume ( skip) ;
7172
72- contents. truncate ( i) ;
73+ contents. to_mut ( ) . truncate ( i) ;
7374
7475 let nsp: Sourcepos = (
7576 sourcepos. end . line ,
@@ -95,26 +96,20 @@ pub(crate) fn process_email_autolinks<'a>(
9596 post. insert_after ( after) ;
9697
9798 let after_ast = & mut after. data_mut ( ) ;
98- process_email_autolinks (
99- arena,
100- after,
101- match after_ast. value {
102- NodeValue :: Text ( ref mut t) => t. to_mut ( ) ,
103- _ => unreachable ! ( ) ,
104- } ,
105- relaxed_autolinks,
106- & mut asp,
107- spx,
108- ) ;
99+ let NodeValue :: Text ( ref mut text) = after_ast. value else {
100+ unreachable ! ( ) ;
101+ } ;
102+ process_email_autolinks ( arena, after, text, relaxed_autolinks, & mut asp, spx) ;
109103 after_ast. sourcepos = asp;
110104 }
111105
112106 return ;
113107 }
114108 }
115109}
110+
116111fn email_match < ' a > (
117- arena : & ' a Arena < AstNode < ' a > > ,
112+ arena : & ' a Arena < ' a > ,
118113 contents : & str ,
119114 i : usize ,
120115 relaxed_autolinks : bool ,
@@ -231,7 +226,7 @@ pub fn www_match<'a>(
231226 subject : & mut Subject < ' a , ' _ , ' _ , ' _ , ' _ , ' _ > ,
232227) -> Option < ( Node < ' a > , usize , usize ) > {
233228 const WWW_DELIMS : [ bool ; 256 ] = character_set ! ( b"*_~([" ) ;
234- let i = subject. pos ;
229+ let i = subject. scanner . pos ;
235230 let relaxed_autolinks = subject. options . parse . relaxed_autolinks ;
236231 let bytes = subject. input . as_bytes ( ) ;
237232
@@ -397,7 +392,7 @@ pub fn url_match<'a>(
397392) -> Option < ( Node < ' a > , usize , usize ) > {
398393 const SCHEMES : [ & str ; 3 ] = [ "http" , "https" , "ftp" ] ;
399394
400- let i = subject. pos ;
395+ let i = subject. scanner . pos ;
401396 let relaxed_autolinks = subject. options . parse . relaxed_autolinks ;
402397 let bytes = subject. input . as_bytes ( ) ;
403398 let size = subject. input . len ( ) ;
0 commit comments