
     h.                         d Z dgZddlZddlZddlmZ ddlmZm	Z	m
Z
mZmZ  G d dej                  j                        Zy)zImplements a DOM for MediaQuery, see
http://www.w3.org/TR/css3-mediaqueries/.

A cssutils implementation, not defined in official DOM.

MediaQuery    N)	normalize)ChoicePreDefProd
ProdParserSequencec                        e Zd ZdZg dZd fd	Zd Zd Zd Zd Z	 e
ee	d	      Zd
 Z e
d ed	      Z e
d       Z xZS )r   a  
    A Media Query consists of one of ``MediaQuery.MEDIA_TYPES``
    and one or more expressions involving media features.

    Format::

        media_query
         : [ONLY | NOT]? S* media_type S* [ AND S* expression ]*
         | expression [ AND S* expression ]*
         ;
        media_type
         : IDENT
         ;
        expression
         : '(' S* media_feature S* [ ':' S* expr ]? ')' S*
         ;
        media_feature
         : IDENT
         ;

    )
allbraillehandheldprint
projectionspeechscreenttytvembossedc                 z    t         |           d| _        d| _        || _        |r|| _        d| _        || _        y)z
        :param mediaText:
            unicodestring of parsable media

        # _standalone: True if new from ML parser
        F N)super__init___wellformed
_mediaType_partof	mediaText	_readonly)selfr   readonlyr   	__class__s       _/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/cssutils/stylesheets/mediaquery.pyr   zMediaQuery.__init__4   s>     	 &DN DL!    c                 P    d| j                   j                   d| j                  dS )Nzcssutils.stylesheets.z(mediaText=))r    __name__r   r   s    r!   __repr__zMediaQuery.__repr__F   s(    &t~~'>'>&?{4>>J\\]^^r"   c                 j    d| j                   j                   d| j                  dt        |       ddS )Nz<cssutils.stylesheets.z object mediaText=z at 0xx>)r    r%   r   idr&   s    r!   __str__zMediaQuery.__str__I   s>    '(?(?'@@RSWSaSaRddjkmnrkstujvvwxxr"   c                 @    t         j                  j                  |       S N)cssutilsserdo_stylesheets_mediaqueryr&   s    r!   _getMediaTextzMediaQuery._getMediaTextL   s    ||55d;;r"   c                      j                           fd}t        t        t        dd dd      t        d fddd	      t        t        d
d d       |       d             t         |       t        t        d
d        |       d                   }t	               j                  |d|      \  }}}}| _        |r.	 |d   }d|vr|j                   _        	  j                  |       yy# t        $ r Y w xY w)a9  
        :param mediaText:
            a single media query string, e.g. ``print and (min-width: 25cm)``

        :exceptions:
            - :exc:`~xml.dom.SyntaxErr`:
              Raised if the specified string value has a syntax error and is
              unparsable.
            - :exc:`~xml.dom.InvalidCharacterErr`:
              Raised if the given mediaType is unknown.
            - :exc:`~xml.dom.NoModificationAllowedErr`:
              Raised if this media query is readonly.

        media_query
         : [ONLY | NOT]? S* media_type S* [ AND S* expression ]*
         | expression [ AND S* expression ]*
         ;
        media_type
         : IDENT
         ;
        expression
         : '(' S* media_feature S* [ ':' S* expr ]? ')' S*
         ;
        media_feature
         : IDENT
         ;

        c            
      4   t        t        j                  dd      t        dd       t        t        j                  dd      t        j
                  j                  j                         d	 
      t        j                  dd j                              S )N
expression()namecharmedia_featurec                 <    | t         j                  j                  k(  S r.   )r   typesIDENTtvs     r!   <lambda>z<MediaQuery._setMediaText.<locals>.<lambda>.<locals>.<lambda>p   s    !v||?Q?Q:Qr"   r7   matchcolon:c                       y)N)r       rG   r"   r!   r@   z<MediaQuery._setMediaText.<locals>.<lambda>.<locals>.<lambda>t   s    vr"   minmaxzexpression ENDr$   )r7   r8   stopIfNoMoreMatch)	r	   r   r8   r   r/   cssvalueMediaQueryValueProdr   r&   s   r!   r@   z*MediaQuery._setMediaText.<locals>.<lambda>n   sm    XKK\4o-QRs3""66t<%
 KK%C4<<
r"   zONLY|NOTc                 Z    | t         j                  j                  k(  xr t        |      dv S )Nonlynotr   r;   r<   r   r=   s     r!   r@   z*MediaQuery._setMediaText.<locals>.<lambda>   s)    qFLL,>,>'> (8!!7(8r"   Tz
not simple)r7   rB   optionaltoStore
media_typec                 p    | t         j                  j                  k(  xr t        |      j                  v S r.   )r   r;   r<   r   MEDIA_TYPES)r>   r?   r   s     r!   r@   z*MediaQuery._setMediaText.<locals>.<lambda>   s0    qFLL,>,>'> (9!!(8(88(9r"   )r7   rB   rJ   rT   ANDc                 \    | t         j                  j                  k(  xr t        |      dk(  S NandrR   r=   s     r!   r@   z*MediaQuery._setMediaText.<locals>.<lambda>   )    10B0B+B ,2%aLE1,2r"   )r7   rB   rT   c                       yN)r   NrG   rG   r"   r!   r@   z*MediaQuery._setMediaText.<locals>.<lambda>       9r"   rH   c                 \    | t         j                  j                  k(  xr t        |      dk(  S rZ   rR   r=   s     r!   r@   z*MediaQuery._setMediaText.<locals>.<lambda>   r\   r"   rA   c                       yr^   rG   rG   r"   r!   r@   z*MediaQuery._setMediaText.<locals>.<lambda>   r_   r"   r   N)_checkReadonlyr   r	   r   r   parser   rL   	mediaTypeKeyError_setSeq)	r   r   r5   prodsokseqstoreunusedrU   s	   `        r!   _setMediaTextzMediaQuery._setMediaTextO   s,   : 	

 #8!( %9&*( "2 ,	 L,	4 "2
 L,7'
T ",!3!3I|U!SC6"<0
  u,%/%5%5DN LL   s   C0 0	C<;C<z6The parsable textual representation of the media list.)docc                    | j                          t        |      }|| j                  vr9| j                  j	                  d|z  t
        j                  j                         y|| _        t        | j                        D ]L  \  }}t        |j                  t              s!t        |j                        dv r9|dddf| j                  |<    y | j                  j                  d|d       y)a  
        :param mediaType:
            one of :attr:`MEDIA_TYPES`

        :exceptions:
            - :exc:`~xml.dom.SyntaxErr`:
              Raised if the specified string value has a syntax error and is
              unparsable.
            - :exc:`~xml.dom.InvalidCharacterErr`:
              Raised if the given mediaType is unknown.
            - :exc:`~xml.dom.NoModificationAllowedErr`:
              Raised if this media query is readonly.
        z,MediaQuery: Syntax Error in media type "%s".)errorrO   r<   Nr   )rb   r   rW   _logro   xmldom	SyntaxErrr   	enumerate_seq
isinstancerL   strinsert)r   rd   
nmediaTypeir)   s        r!   _setMediaTypezMediaQuery._setMediaType   s     	y)
T---IIOO>Jgg''   (DO "$)),1aggs+ )_<  )27D$'G		! - 		  Iw7r"   c                     | j                   S r.   )r   r&   s    r!   r@   zMediaQuery.<lambda>   s    T__r"   z`The media type of this MediaQuery (one of ``MEDIA_TYPES``) but only if it is a simple MediaType!c                     | j                   S r.   )r   r&   s    r!   r@   zMediaQuery.<lambda>   s
    t'7'7r"   )NFF)r%   
__module____qualname____doc__rW   r   r'   r,   r2   rl   propertyr   r{   rd   
wellformed__classcell__)r    s   @r!   r   r      sl    ,K"$_y<bH DI$8L $AI 78Jr"   )r   __all__xml.domrq   r/   cssutils.helperr   cssutils.prodparserr   r   r   r   r	   util_NewBaser   rG   r"   r!   <module>r      s:    .   % J JV9'' V9r"   