a
    mߛ`                     @   sj   d Z dZddlZddlmZmZ ddlmZ ddlmZ ddl	m
Z
 G dd	 d	ejZG d
d deZdS )z4
Directives for typically HTML-specific constructs.
ZreStructuredText    N)nodesutils)	Directive)states)
componentsc                   @   s6   e Zd ZG dd dejejejZdd Zdd Z	dS )MetaBodyc                   @   s   e Zd ZdZdS )zMetaBody.metazHTML-specific "meta" element.N)__name__
__module____qualname____doc__ r   r   Clib/python3.9/site-packages/docutils/parsers/rst/directives/html.pymeta   s   r   c                 C   s&   |  |\}}|  j|7  _g |g fS )zMeta element.)	parsemetaparent)selfmatchcontextZ
next_statenodeblank_finishr   r   r   field_marker   s    zMetaBody.field_markerc                 C   s  |  |}tt|}| j| \}}}}|  }t	t
jdd|gd}ttd||d< |s| jj}	| jd| t|	|	}
|
|fS | }z&t|d d \}}||| < W n  tjy   |d |d< Y n0 |d	d  D ]}z"t|d \}}||| < W q tjyv } z>| jj}	| jd
||f t|	|	}
|
|fW  Y d }~  S d }~0 0 q| j| ||fS )Nwriterzhtml,latex,odt)Z	componentformatr    contentzNo content for meta tag "%s".r   name   z*Error parsing meta tag attribute "%s": %s.)Zparse_field_markerr   ZunescapeZescape2nullstate_machineZget_first_known_indentedendr   r   pendingr   ZFilterjoinlinereporterinfoliteral_blocksplitZextract_name_valuelowerZNameValueErrorerrorZdocumentZnote_pending)r   r   r   ZindentedindentZline_offsetr   r   r   r!   msgtokensZattnamevaltokenZdetailr   r   r   r      sT    




$zMetaBody.parsemetaN)
r   r	   r
   r   SpecialZPreBibliographicElementr   r   r   r   r   r   r   r      s   r   c                   @   s"   e Zd ZdZdefiZdd ZdS )MetaTZstate_classesc                 C   sv   |    t }| jj| j| j|dd| jd\}}|| j t| jkrp| j	j
jdt| j| j| jd}||7 }|jS )Nr   T)Zinitial_stater   Zstate_machine_kwargszInvalid meta directive.)r!   )Zassert_has_contentr   r.   stateZnested_list_parser   Zcontent_offsetSMkwargslenr   r"   r'   r$   Z
block_textlinenoZchildren)r   r   Znew_line_offsetr   r'   r   r   r   runJ   s    

zMeta.runN)r   r	   r
   Zhas_contentr   r1   r4   r   r   r   r   r/   D   s   
r/   )r   Z__docformat__sysZdocutilsr   r   Zdocutils.parsers.rstr   r   Zdocutils.transformsr   ZSpecializedBodyr   r/   r   r   r   r   <module>   s   2