
    i
                    |    d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d	dZ	d
dZ
ddZedk(  r e e             y)    )annotationsN)Path)parse_all_custom_propertiesc                   g g g g g d}t        |       D ]M  |    j                         }g }t        j                  d|      D ]  }||vs|j	                  |        d}t        j
                  d|      st        j
                  d|      r|}n|r|d   }||d}dv r|d	   j	                  |       d
v r|d   j	                  |       t        fddD              r|d   j	                  |       t        fddD              r|d   j	                  |       dv s.t        j
                  d|      st        j
                  d|      s:|d   j	                  |       P |S )z/Group aliases into the configured tier buckets.)utilsemanticaction	componentcorezvar\(\s*(--[\w-]+)Nz#[0-9a-fA-F]{3,8}z(?:rgba?|hsla?)\(\s*[^()]+\s*\)r   )alias
referencesterminal_hintz-util-r   z
-semantic-r   c              3  &   K   | ]  }|v  
 y wN .0tokenr   s     P/home/jay/workspace/.worktrees/task-2116-dev1/tools/insane-design/alias_layer.py	<genexpr>z$detect_alias_tier.<locals>.<genexpr>-   s     M%u~M   )z-action-z-btn-z-button-r	   c              3  &   K   | ]  }|v  
 y wr   r   r   s     r   r   z$detect_alias_tier.<locals>.<genexpr>/   s     c%u~cr   )z-input-z-card-z-nav-z-dialog-z	-popover-r
   z-core-r   )sortedstriprefindallappend	fullmatchany)propstiersvaluer   	referencer   entryr   s          @r   detect_alias_tierr%      s{    $E   (e""$ "
$95A 	-I
*!!),	- <<,e4Egin8o!M&qMM $*
 u&M  '5 *$$U+M+LMM(O""5)c+bcc+%%e,||0%8||>F&M  'A (D L    c                   t        j                         dz  | z  dz  }dj                  d t        |j	                  d            D              }t        |      }t        |      }| |d|j                         D ci c]  \  }}|t        |       c}}id}t        j                         dz  | z  dz  d	z  }|j                  j                  d
d
       |j                  t        j                  |d      dz   d       |S c c}}w )zARead CSS for a slug, classify aliases, and write the JSON report.zinsane-designcss
c              3  B   K   | ]  }|j                  d d        yw)utf-8replace)encodingerrorsN)	read_text)r   paths     r   r   zextract_slug.<locals>.<genexpr>>   s     q4DNNGINFqs   z*.csstier_counts)slugr!   statsphase1zalias_layer.jsonT)parentsexist_ok   indentr+   )r-   )r   cwdjoinr   globr   r%   itemslenparentmkdir
write_textjsondumps)	r2   css_dirr(   r    r!   	tier_nameentriesresultoutput_paths	            r   extract_slugrI   ;   s    hhj?*T1E9G
))qSYZaZfZfgnZoSpq
qC',Ee$ETYT_T_Ta!b>Pi)S\"9!bcF ((*.5@CUUKTD94::fQ7$>QM "cs   :Dc                     t        t        j                        dkD  rt        j                  d   nd} t        j                  j	                  t        j                  t        |       d      dz          y)N   striper7   r8   r)   r   )r>   sysargvstdoutwriterB   rC   rI   )r2   s    r   mainrQ   M   sJ    chh-!+388A;DJJTZZT 21=DEr&   __main__)r    zdict[str, str]returnzdict[str, list[dict]])r2   strrS   dict)rS   int)
__future__r   rB   r   rM   pathlibr   
css_parserr   r%   rI   rQ   __name__
SystemExitr   r&   r   <module>r\      sC    "  	 
  2,^$ z
TV
 r&   