
    ,g                     N    d Z ddlmZ ddlZddlZddlmZ ddlmZ d Z	d	 Z
d
 Zy)zApply CSS to SVG documents.    )urljoinN   )LOGGER   )	parse_urlc              #     K   |D ]  }|j                   dk(  r|j                  dk(  s"|j                  /t        j                  |j
                        }|j                   dvr]t        t        ||j                              }t        j                  | j                  |d      j                               }|j                         }t        | ||      E d{    |j                   dk(  s|  y7 w)z.Find rules among stylesheet rules and imports.zat-ruleimportN)stringurltext/csszqualified-rule)typelower_at_keywordcontenttinycss2parse_one_component_valuepreluder   r   valueparse_stylesheet	fetch_urldecodegeturlfind_stylesheets_rules)treestylesheet_rulesr   rule	url_tokencss_url
stylesheets          j/home/viktor/gitlab-persoonlijk/factuur-applicatie/venv/lib/python3.12/site-packages/weasyprint/svg/css.pyr   r      s       99	!$$0T\\5I$>>t||L	>>)::#GC$AB%66NN7J7>>@B
nn&1$
CHHH YY**J Is"   $C3C3B C3C1C3*C3c                 R   g }g }t        j                  |       D ]  }|j                  dk(  s|j                  j	                  d      r/t        j
                  |j                        j                         }|j                  r|n|}|j                  |j                  |f        ||fS )z+Parse declarations in a given rule content.declaration-)r   parse_blocks_contentsr   name
startswith	serializer   strip	importantappend
lower_name)inputnormal_declarationsimportant_declarationsr!   r   declarationss         r   parse_declarationsr/   "   s    55e< 
A -$$//4&&{'8'89??AE*5*?*?&(  !7!7 ?@
A  666    c                    t        j                         }t        j                         }g }| j                  j                         D ]f  }|j                  dk(  s|j                  dd      dk(  s)|j                  s6|j                  t        j                  |j                  dd             h |D ]  }t        | ||      D ]  }t        |j                        \  }}		 t        j                  |j                        }
|
D ]E  }|j&                  |j(                  r|r|j+                  ||       |	s4|j+                  ||	       G   ||fS # t         j                  j                   $ r!}t#        j$                  d|       Y d}~ d}~ww xY w)z8Find stylesheets and return rule matchers in given tree.z!{http://www.w3.org/2000/svg}styler   r   T)skip_commentsskip_whitespacez(Failed to apply CSS rule in SVG rule: %sN)
cssselect2Matcheretree_elementitertaggettextr)   r   r   r   r/   r   compile_selector_listr   parserSelectorErrorr   warningpseudo_elementnever_matchesadd_selector)r   r   normal_matcherimportant_matcherstylesheetselementr   r   r,   r-   	selectors	exceptionselectors                r   parse_stylesheetsrI   4   s   '')N"**, K%%**, 	IKK>>FJ/:= x88D$ H I	I " >
*4SA 	>D:L;7!7&<<T\\J	
 & >++3$22*&33$&9;-)66$&<>>	>>( ,,, $$22 >	Ks   EF*FF)__doc__urllib.parser   r4   r   loggerr   utilsr   r   r/   rI    r0   r   <module>rO      s&    !      ,7$(-r0   