@@ -213,6 +213,7 @@ pub struct Tokenizer<'a> {
213213 current_line_number : u32 ,
214214 var_functions : SeenStatus ,
215215 source_map_url : Option < & ' a str > ,
216+ source_url : Option < & ' a str > ,
216217}
217218
218219#[ derive( Copy , Clone , PartialEq , Eq ) ]
@@ -238,6 +239,7 @@ impl<'a> Tokenizer<'a> {
238239 current_line_number : first_line_number,
239240 var_functions : SeenStatus :: DontCare ,
240241 source_map_url : None ,
242+ source_url : None ,
241243 }
242244 }
243245
@@ -285,6 +287,11 @@ impl<'a> Tokenizer<'a> {
285287 self . source_map_url
286288 }
287289
290+ #[ inline]
291+ pub fn current_source_url ( & self ) -> Option < & ' a str > {
292+ self . source_url
293+ }
294+
288295 #[ inline]
289296 pub fn state ( & self ) -> ParserState {
290297 ParserState {
@@ -692,7 +699,8 @@ fn consume_whitespace<'a>(tokenizer: &mut Tokenizer<'a>, newline: bool) -> Token
692699}
693700
694701
695- // Check for a sourceMappingURL comment and update the tokenizer appropriately.
702+ // Check for sourceMappingURL or sourceURL comments and update the
703+ // tokenizer appropriately.
696704fn check_for_source_map < ' a > ( tokenizer : & mut Tokenizer < ' a > , contents : & ' a str ) {
697705 let directive = "# sourceMappingURL=" ;
698706 let directive_old = "@ sourceMappingURL=" ;
@@ -704,6 +712,17 @@ fn check_for_source_map<'a>(tokenizer: &mut Tokenizer<'a>, contents: &'a str) {
704712 c == ' ' || c == '\t' || c == '\x0C' || c == '\r' || c == '\n'
705713 } ) . next ( )
706714 }
715+
716+ let directive = "# sourceURL=" ;
717+ let directive_old = "@ sourceURL=" ;
718+
719+ // If there is a source map directive, extract the URL.
720+ if contents. starts_with ( directive) || contents. starts_with ( directive_old) {
721+ let contents = & contents[ directive. len ( ) ..] ;
722+ tokenizer. source_url = contents. split ( |c| {
723+ c == ' ' || c == '\t' || c == '\x0C' || c == '\r' || c == '\n'
724+ } ) . next ( )
725+ }
707726}
708727
709728fn consume_comment < ' a > ( tokenizer : & mut Tokenizer < ' a > ) -> & ' a str {
0 commit comments