
    1yi^                       U d Z ddlmZ ddlZddlmZ ddlmZ  eg de	d      Z
d	ed
<   ddddddZded<    ej                  dej                        Z ej                  dej                        Z ej                  d      Z ej                  dej$                        Z ej                  d      Z ej                  dej*                  z         Z ej                  d      Z ej                  d      Z G d de      Zd ej                  dej                        fd ej                  d      fd ej                  d       fd! ej                  d"ej                  ej$                  z        fd#efd$efd% ej                  d&ej4                        fd' ej                  d(ej6                        fd) ej                  d*d+j9                  d, e
D              z        fd- ej                  d.ej                        fd/ ej                  d0ej4                  ej$                  z        fgZd1ed2<   	 	 	 	 	 	 	 	 d7d3Zd8d4Zd9d5Z 	 	 	 	 d:	 	 	 	 	 	 	 	 	 	 	 d;d6Z!y)<z
babel.messages.jslexer
~~~~~~~~~~~~~~~~~~~~~~

A simple JavaScript 1.5 lexer which is used for the JavaScript
extractor.

:copyright: (c) 2013-2026 by the Babel Team.
:license: BSD, see LICENSE for more details.
    )annotationsN)	Generator)
NamedTuple)++-*%z!=z==<>z<=z>==z+=z-=z*=z%=z<<z>>z>>>z<<=z>>=z>>>=&z&=|z|=z&&z||^z^=()[]{}!--++~,;.:T)keyreversez	list[str]	operators
	)bfnrtzdict[str, str]escapesz[\w$_][\w\d$_]*z[\w$_][\w\d$_.]*[\w\d$_.]z/=?z%/(?:[^/\\]*(?:\\.[^/\\]*)*)/[a-zA-Z]*z(\r\n|\n|\r)z\\z[a-fA-F0-9]{1,4}z[a-fA-F0-9]{1,2}c                  ,    e Zd ZU ded<   ded<   ded<   y)TokenstrtypevalueintlinenoN)__name__
__module____qualname____annotations__     X/var/www/html/content_weaver/venv/lib/python3.12/site-packages/babel/messages/jslexer.pyr-   r-   %   s    
IJKr8   r-   z\s+z<!--.*linecommentz//.*multilinecommentz	/\*.*?\*/dotted_namenamenumberzb(
        (?:0|[1-9]\d*)
        (\.\d+)?
        ([eE][-+]?\d+)? |
        (0x[a-fA-F0-9]+)
    )jsx_tagz(?:</?[^>\s]+|/>)operatorz(%s)r   c              #  F   K   | ]  }t        j                  |        y w)N)reescape).0ops     r9   	<genexpr>rF   9   s     .Qryy}.Qs   !template_stringz`(?:[^`\\]*(?:\\.[^`\\]*)*)`stringzT(
        '(?:[^'\\]*(?:\\.[^'\\]*)*)'  |
        "(?:[^"\\]*(?:\\.[^"\\]*)*)"
    )(list[tuple[str | None, re.Pattern[str]]]_rulesc                    g }t         D ]3  \  }}| s|rd|v r|s|dk(  r|dk(  r|sd}|j                  ||f       5 |S )ze
    Get a tokenization rule list given the passed syntax options.

    Internal to this module.
    jsxrG   r<   r=   )rJ   append)rL   dottedrG   rules
token_typerules         r9   	get_rulesrR   B   se     E" 	)
Dzez&9:1B#B&Jj$'(	) Lr8   c                X    | j                   dk(  r| j                  dv S | j                   dv S )zzA helper function that helps the tokenizer to decide if the current
    token may be followed by a division operator.
    r@   )r   r   r   r   r   )r=   r>   rH   regexp)r/   r0   )tokens    r9   indicates_divisionrV   Z   s0     zzZ{{999::???r8   c                x   | r| d   | d   k(  r| d   dv sJ d       t         j                  d| dd       } g }|j                  }d}	 | j                  d|      }|dk  rn$ || ||        | |dz      }|t        v r |t        |          n|dv rt
        j                  | |d	z         }|\|j                         }t        |      dk(  r"	  |t        t        |d                   |dz   } |||z          |j                         } ||       nn|dv rbt        j                  | |d	z         }|>|j                         } |t        t        |d                   |d	z   t        |      z   }& ||       n ||       |d	z   }=|t        |       k  r || |d
        dj                  |      S # t        $ r Y w xY w)zUnquote a string with JavaScript rules.  The string has to start with
    string delimiters (``'``, ``"`` or the back-tick/grave accent (for template strings).)
    r   z"'`z)string provided is not properly delimitedz\1   \uU   N         xX )line_join_resubrM   findr+   uni_escape_rematchgrouplenchrr1   
ValueErrorendhex_escape_rejoin)rH   resultaddpos
escape_pos	next_charescapedescaped_values           r9   unquote_stringru   c   s    fQi6":-&)v2E 3E eVAb\2FF
--C
C
[[s+
>F3z"# :>*		"# $#))&*q.AG" '}%*!CM2 678 )1n I-.kkmI $#))&*q.AG" 'CM2./0 1ns='99I 	N1na d S[F34L776?= & s   F- -	F98F9c              #    K   d}d}t        |       }t        |||      }||k  r|D ]  \  }	}
|
j                  | |      }| n< |rt        j                  | |      }d}	nt        j                  | |      }d}	||dz  }`|j                         }|	t        |	||      }t        |      }| |t        t        j                  |            z  }|j                         }||k  ryyw)aU  
    Tokenize JavaScript/JSX source.  Returns a generator of tokens.

    :param source: The JavaScript source to tokenize.
    :param jsx: Enable (limited) JSX parsing.
    :param dotted: Read dotted names as single name token.
    :param template_string: Support ES6 template strings
    :param lineno: starting line number (optional)
    Fr   )rL   rN   rG   Nr@   rT   rY   )rh   rR   rf   division_reregex_rerg   r-   rV   line_refindallrk   )sourcerL   rN   rG   r2   
may_dividerp   rk   rO   rP   rQ   rf   token_valuerU   s                 r9   tokenizer~      s       J
C
f+C#foNE
) % 	JJJvs+E 	 #))&#6'
 vs3%
}qkkm!*k6:E+E2JK#gook233iik9 )s   ?C'B"C'%C')rL   boolrN   r   rG   r   returnrI   )rU   r-   r   r   )rH   r.   r   r.   )TTTrY   )r{   r.   rL   r   rN   r   rG   r   r2   r1   r   zGenerator[Token, None, None])"__doc__
__future__r   rB   collections.abcr   typingr   sortedrh   r    r6   r+   compileUNICODEname_redotted_name_rerw   DOTALLrx   ry   patternrb   re   rl   r-   VERBOSEIrm   rJ   rR   rV   ru   r~   r7   r8   r9   <module>r      s  	 # 	 %  
 D	9  !%4dDQ Q
"**'
48"**Ebjj 2::>		J
"**_
%rzz%'//12

./

./J  
:2::fbjj)*	:2::i !JBJJw'(L"**ryy2HIJN#Wzrzz 	
 **  


/67Gchh.Qy.Q&QQRS


#F

STzrzz 	 **ryy
 " #!40 .	  .	0@AL  11	1 1 	1
 1 "1r8   