a
    ZXh                     @   sF   d dl Z ddlmZmZ dd Zdd Zdd	 Zd
d Ze dZ	dS )    N   )_next_significant_to_token_iteratorc                 C   s  t | dd}t|}|du r dS |j}|dkrB|jrBt|d|jS |dkr|jr|j}|dkrjt||jS |dkrt||jd	S t	
|}|rt||jt|d
S nf|dkr|j}|dkrt|ddS |dkrt|dd
S |dk rt|d
S |dkr
t|d	S |dkr t|d
d	S |dkr6t|d	d	S |d dkrtt	
|d
d }|rt|d	t|d
S n&t	
|}|rt|d
t|d
S nt|dkrt|}|jdkr|j}|dkrt|d
S |dkrt|d
d	S t	
|}|rt|d
t|d
S dS )aF  Parse `<An+B> <https://drafts.csswg.org/css-syntax-3/#anb>`_,
    as found in `:nth-child()
    <https://drafts.csswg.org/selectors/#nth-child-pseudo>`_
    and related Selector pseudo-classes.

    Although tinycss2 does not include a full Selector parser,
    this bit of syntax is included as it is particularly tricky to define
    on top of a CSS tokenizer.

    :type input: :obj:`str` or :term:`iterable`
    :param input: A string or an iterable of :term:`component values`.
    :returns:
        A ``(a, b)`` tuple of integers, or :obj:`None` if the input is invalid.

    T)Zskip_commentsNnumberr   Z	dimensionnzn-r   identZeven   Zoddz-nz-n--+)r   r   type
is_integer	parse_end	int_valueZ
lower_unitparse_bparse_signless_bN_DASH_DIGITS_REmatchintgroupZlower_valuenext)inputtokenstoken
token_typeunitr   r    r   Q/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/tinycss2/nth.py	parse_nth   s`    













r   c                 C   sp   t | }|d u r|dfS |dkr,t| |dS |dkr@t| |dS |jdkrl|jrl|jd dv rlt| ||jS d S )Nr   r   r   r
   r   r   -+)r   r   r   r   representationr   r   )r   ar   r   r   r   r   K   s    r   c                 C   s<   t | }|jdkr8|jr8|jd dvr8t| |||j S d S )Nr   r   r   )r   r   r   r    r   r   )r   r!   Zb_signr   r   r   r   r   X   s
    r   c                 C   s   t | d u r||fS d S )N)r   )r   r!   br   r   r   r   _   s    r   z^n(-[0-9]+)$)
reparserr   r   r   r   r   r   compiler   r   r   r   r   <module>   s   E