o
    _h                     @   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r!|jr!t|d|jS |dkrU|jrU|j}|dkr5t||jS |dkr@t||jd	S t	
|}|rSt||jt|d
S dS |dkr|j}|dkrft|ddS |dkrpt|dd
S |dkryt|d
S |dkrt|d	S |dkrt|d
d	S |dkrt|d	d	S |d dkrt	
|d
d }|rt|d	t|d
S dS t	
|}|rt|d
t|d
S dS |dkrt|}|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 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)skip_commentsNnumberr   	dimensionnzn-r   identeven   oddz-nz-n--+)r   r   type
is_integer	parse_end	int_value
lower_unitparse_bparse_signless_bN_DASH_DIGITS_REmatchintgrouplower_valuenext)inputtokenstoken
token_typeunitr   r
    r"   @/var/www/html/myenv/lib/python3.10/site-packages/tinycss2/nth.py	parse_nth   sl   





r$   c                 C   sx   t | }|d u r|dfS |dkrt| |dS |dkr t| |dS |jdkr6|jr8|jd dv r:t| ||jS d S d 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   sD   t | }|jdkr|jr|jd dvr t| |||j S d S d S d S )Nr   r   r%   )r   r   r   r&   r   r   )r   r'   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