66
77use self :: Token :: * ;
88use crate :: cow_rc_str:: CowRcStr ;
9- use crate :: parser:: ParserState ;
9+ use crate :: parser:: { ArbitrarySubstitutionFunctions , ParserState } ;
1010use std:: char;
1111use std:: ops:: Range ;
1212
@@ -215,15 +215,15 @@ pub struct Tokenizer<'a> {
215215 /// of UTF-16 characters.
216216 current_line_start_position : usize ,
217217 current_line_number : u32 ,
218- var_or_env_functions : SeenStatus ,
218+ arbitrary_substitution_functions : SeenStatus < ' a > ,
219219 source_map_url : Option < & ' a str > ,
220220 source_url : Option < & ' a str > ,
221221}
222222
223223#[ derive( Copy , Clone , PartialEq , Eq ) ]
224- enum SeenStatus {
224+ enum SeenStatus < ' a > {
225225 DontCare ,
226- LookingForThem ,
226+ LookingForThem ( ArbitrarySubstitutionFunctions < ' a > ) ,
227227 SeenAtLeastOne ,
228228}
229229
@@ -235,30 +235,33 @@ impl<'a> Tokenizer<'a> {
235235 position : 0 ,
236236 current_line_start_position : 0 ,
237237 current_line_number : 0 ,
238- var_or_env_functions : SeenStatus :: DontCare ,
238+ arbitrary_substitution_functions : SeenStatus :: DontCare ,
239239 source_map_url : None ,
240240 source_url : None ,
241241 }
242242 }
243243
244244 #[ inline]
245- pub fn look_for_var_or_env_functions ( & mut self ) {
246- self . var_or_env_functions = SeenStatus :: LookingForThem ;
245+ pub fn look_for_arbitrary_substitution_functions (
246+ & mut self ,
247+ fns : ArbitrarySubstitutionFunctions < ' a > ,
248+ ) {
249+ self . arbitrary_substitution_functions = SeenStatus :: LookingForThem ( fns) ;
247250 }
248251
249252 #[ inline]
250- pub fn seen_var_or_env_functions ( & mut self ) -> bool {
251- let seen = self . var_or_env_functions == SeenStatus :: SeenAtLeastOne ;
252- self . var_or_env_functions = SeenStatus :: DontCare ;
253+ pub fn seen_arbitrary_substitution_functions ( & mut self ) -> bool {
254+ let seen = self . arbitrary_substitution_functions == SeenStatus :: SeenAtLeastOne ;
255+ self . arbitrary_substitution_functions = SeenStatus :: DontCare ;
253256 seen
254257 }
255258
256259 #[ inline]
257260 pub fn see_function ( & mut self , name : & str ) {
258- if self . var_or_env_functions == SeenStatus :: LookingForThem
259- && ( name . eq_ignore_ascii_case ( "var" ) | | name. eq_ignore_ascii_case ( "env" ) )
260- {
261- self . var_or_env_functions = SeenStatus :: SeenAtLeastOne ;
261+ if let SeenStatus :: LookingForThem ( fns ) = self . arbitrary_substitution_functions {
262+ if fns . iter ( ) . any ( |a | name. eq_ignore_ascii_case ( a ) ) {
263+ self . arbitrary_substitution_functions = SeenStatus :: SeenAtLeastOne ;
264+ }
262265 }
263266 }
264267
0 commit comments