
    XiE                     ,    S SK r S SKJr   " S S5      rg)    N)crc32c                   z    \ rS rSr\R
                  " S5      rS rS rS r	S r
S rS rS	 rS
 rS rS rS rSrg)_NameMangler   z ([A-Z]?[a-z]+)|([A-Z]+(?![a-z]))c              #   d   #    S U R                   R                  U5       5        Sh  vN   g N7f)a  
Split a string into words. Should correctly handle splitting:
    camelCase
    PascalCase
    kebab-case
    snake_case
    MACRO_CASE
    camel_Snake_Case
    Pascal_Snake_Case
    COBOL-CASE
    Http-Header-Case

It _does not_ handle splitting spongebob case.
c              3   B   #    U  H  oR                  S 5      v   M     g7f)r   N)group).0ms     @/app/.venv/lib/python3.13/site-packages/strenum/_name_mangler.py	<genexpr>%_NameMangler.words.<locals>.<genexpr>   s     C(B1GGAJJ(Bs   N)_regexfinditerselfnames     r   words_NameMangler.words	   s%      D(<(<T(BCCCs   &0.0c                 T    S nSR                  U" U R                  U5      5      5      $ )z
Convert a name to camelCase
c              3   j   #    [        U S5      R                  5       v   S U  5        S h  vN   g  N7f)N c              3   @   #    U  H  oR                  5       v   M     g 7fNtitler
   ws     r   r   :_NameMangler.camel.<locals>.cased_words.<locals>.<genexpr>!        59a		9   nextlower	word_iters    r   cased_words'_NameMangler.camel.<locals>.cased_words   )     y"%++--59555   )313r   joinr   r   r   r'   s      r   camel_NameMangler.camel   s&    
	6 ww{4::d#3455    c                 P    SR                  S U R                  U5       5       5      $ )z
Convert a name to PascalCase
r   c              3   @   #    U  H  oR                  5       v   M     g 7fr   r   r   s     r   r   &_NameMangler.pascal.<locals>.<genexpr>*   s     ;*:Qwwyy*:r!   r+   r   s     r   pascal_NameMangler.pascal%   s"    
 ww;$**T*:;;;r0   c                 P    SR                  S U R                  U5       5       5      $ )z
Convert a name to kebab-case
-c              3   @   #    U  H  oR                  5       v   M     g 7fr   r$   r   s     r   r   %_NameMangler.kebab.<locals>.<genexpr>1        <+;a		+;r!   r+   r   s     r   kebab_NameMangler.kebab,   "    
 xx<4::d+;<<<r0   c                 P    SR                  S U R                  U5       5       5      $ )z
Convert a name to snake_case
_c              3   @   #    U  H  oR                  5       v   M     g 7fr   r9   r   s     r   r   %_NameMangler.snake.<locals>.<genexpr>8   r;   r!   r+   r   s     r   snake_NameMangler.snake3   r>   r0   c                 P    SR                  S U R                  U5       5       5      $ )z
Convert a name to MACRO_CASE
r@   c              3   @   #    U  H  oR                  5       v   M     g 7fr   upperr   s     r   r   %_NameMangler.macro.<locals>.<genexpr>?   r;   r!   r+   r   s     r   macro_NameMangler.macro:   r>   r0   c                 T    S nSR                  U" U R                  U5      5      5      $ )z$
Convert a name to camel_Snake_Case
c              3   j   #    [        U S5      R                  5       v   S U  5        S h  vN   g  N7f)Nr   c              3   @   #    U  H  oR                  5       v   M     g 7fr   r   r   s     r   r   @_NameMangler.camel_snake.<locals>.cased_words.<locals>.<genexpr>L   r    r!   r"   r%   s    r   r'   -_NameMangler.camel_snake.<locals>.cased_wordsJ   r)   r*   r@   r+   r-   s      r   camel_snake_NameMangler.camel_snakeE   s&    
	6 xxDJJt$4566r0   c                 P    SR                  S U R                  U5       5       5      $ )z%
Convert a name to Pascal_Snake_Case
r@   c              3   @   #    U  H  oR                  5       v   M     g 7fr   r   r   s     r   r   ,_NameMangler.pascal_snake.<locals>.<genexpr>U   r;   r!   r+   r   s     r   pascal_snake_NameMangler.pascal_snakeP   r>   r0   c                 l   ^^ S mU4S jmSR                  U4S jU R                  U5       5       5      $ )z
Convert a name to SpOngEBOb_CASe

The PRNG we use is seeded with the word to be scrambled. This produces
stable output so the same input will always produce in the same output.
It's not `truly` random, but your tests will thank me.
c              3      #    S[        U R                  S5      5      -  S-  nS n[        S5       H  nU" U5      u  p1M      U" U5      u  pAU(       a  [        R                  O[        R
                  v   M5  7f)Nl        zutf-8   c                 @    U S-	  U S-  U S-  S-	  -  S-  -  n U S-  nX4$ )NrZ          )statebits     r   step2_NameMangler.spongebob.<locals>.prng.<locals>.stepc   s8    
edlut|6I&Jr%QQckz!r0   d   )r   encoderangestrrH   r$   )	seed_wordr_   ra   r@   r`   s        r   prng$_NameMangler.spongebob.<locals>.prng`   sk     eI$4$4W$=>>BE"
 3Z;5  !%[
#&ciiCII5 s   A6A8c           	      T   > SR                  S [        U T" U 5      5       5       5      $ )Nr   c              3   6   #    U  H  u  pU" U5      v   M     g 7fr   r^   )r
   chfs      r   r   ;_NameMangler.spongebob.<locals>.scramble.<locals>.<genexpr>o   s     D.CUR1R55.Cs   )r,   zip)wordrh   s    r   scramble(_NameMangler.spongebob.<locals>.scramblen   s#    77Dc$T
.CDDDr0   r@   c              3   4   >#    U  H  nT" U5      v   M     g 7fr   r^   )r
   r   rq   s     r   r   )_NameMangler.spongebob.<locals>.<genexpr>q   s     >-=-=s   r+   )r   r   rh   rq   s     @@r   	spongebob_NameMangler.spongebobW   s.    	6	E xx>TZZ-=>>>r0   c                 P    SR                  S U R                  U5       5       5      $ )z
Convert a name to COBOL-CASE
r7   c              3   @   #    U  H  oR                  5       v   M     g 7fr   rG   r   s     r   r   %_NameMangler.cobol.<locals>.<genexpr>x   r;   r!   r+   r   s     r   cobol_NameMangler.cobols   r>   r0   c                 P    SR                  S U R                  U5       5       5      $ )z$
Convert a name to Http-Header-Case
r7   c              3   @   #    U  H  oR                  5       v   M     g 7fr   r   r   s     r   r   +_NameMangler.http_header.<locals>.<genexpr>   r;   r!   r+   r   s     r   http_header_NameMangler.http_headerz   r>   r0   r^   N)__name__
__module____qualname____firstlineno__recompiler   r   r.   r4   r<   rC   rJ   rQ   rV   ru   rz   r   __static_attributes__r^   r0   r   r   r      sI    ZZ;<FD"	6<===	7=?8==r0   r   )r   zlibr   r   r^   r0   r   <module>r      s    	 y= y=r0   