o
    N=&b                     @   s   d Z dZddlmZ ddlZddlmZmZ ddlmZ G dd deZ	G d	d
 d
e	Z
i ddddddddddddddddddddddddddddddd d!d"d!d#d$d%Zd&d' ZdS )(z0
This package contains Docutils Writer modules.
ZreStructuredText    )import_moduleN)	languages	Component)	universalc                   @   sX   e Zd ZdZdZdZdd ZdZ	 dZ	 dZ		 dZ
	 dd Zd	d
 Zdd Zdd ZdS )Writera  
    Abstract base class for docutils Writers.

    Each writer module or package must export a subclass also called 'Writer'.
    Each writer must support all standard node types listed in
    `docutils.nodes.node_class_names`.

    The `write()` method is the main entry point.
    writerZwritersc                 C   s   t | tjtjtjg S N)r   get_transformsr   ZMessagesZFilterMessagesZStripClassesAndElementsself r   =usr/lib/python3.10/site-packages/docutils/writers/__init__.pyr	   !   s
   zWriter.get_transformsNc                 C   s
   i | _ d S r   )partsr
   r   r   r   __init__5   s   zWriter.__init__c                 C   s6   || _ t|jj|j| _|| _|   | j	| j
S )a/  
        Process a document into its final form.

        Translate `document` (a Docutils document tree) into the Writer's
        native format, and write it out to its `destination` (a
        `docutils.io.Output` subclass object).

        Normally not overridden or extended in subclasses.
        )documentr   Zget_languagesettingsZlanguage_codeZreporterlanguagedestination	translatewriteoutput)r   r   r   r   r   r   r   >   s   
zWriter.writec                 C   s   t d)a  
        Do final translation of `self.document` into `self.output`.  Called
        from `write`.  Override in subclasses.

        Usually done with a `docutils.nodes.NodeVisitor` subclass, in
        combination with a call to `docutils.nodes.Node.walk()` or
        `docutils.nodes.Node.walkabout()`.  The ``NodeVisitor`` subclass must
        support all standard elements (listed in
        `docutils.nodes.node_class_names`) and possibly non-standard elements
        used by the current Reader as well.
        z"subclass must override this method)NotImplementedErrorr
   r   r   r   r   P   s   zWriter.translatec                 C   s,   | j | jd< | jjj| jd< tj| jd< dS )z<Assemble the `self.parts` dictionary.  Extend in subclasses.ZwholeencodingversionN)r   r   r   r   Zoutput_encodingdocutils__version__r
   r   r   r   assemble_parts^   s   zWriter.assemble_parts)__name__
__module____qualname____doc__Zcomponent_typeZconfig_sectionr	   r   r   r   r   r   r   r   r   r   r   r   r   r      s"    
	r   c                   @   s   e Zd ZdZdd ZdS )UnfilteredWriterz
    A writer that passes the document tree on unchanged (e.g. a
    serializer.)

    Documents written by UnfilteredWriters are typically reused at a
    later date using a subclass of `readers.ReReader`.
    c                 C   s
   t | S r   )r   r	   r
   r   r   r   r	   o   s   
zUnfilteredWriter.get_transformsN)r   r   r   r    r	   r   r   r   r   r!   e   s    r!   htmlZ	html4css1Zhtml4Zxhtml10html5Zhtml5_polyglotZxhtmlZs5Zs5_htmlZlatexZlatex2eZxelatexZxetexZluatexZlualatexZodfZodf_odtZodtZoofficeZ
openofficeZlibreofficepprintZ	pseudoxmlpformatZrlpdfZdocutils_xml)Zpdfxmlc                 C   sx   |   }t||}z
td| }W |jS  ty;   z	t|}W Y |jS  ty: } z
td|  d| d}~ww w )z6Return the Writer class from the `writer_name` module.zdocutils.writers.zWriter "z" not found. N)lower_writer_aliasesgetr   ImportErrorr   )Zwriter_namenamemoduleerrr   r   r   get_writer_class   s   r.   )r    Z__docformat__	importlibr   r   r   r   Zdocutils.transformsr   r   r!   r(   r.   r   r   r   r   <module>   s^   S	
