B
    0a7              	   @   s
  d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dlZd dlZd dlm	Z	 d dl
mZ d	d
lmZ ejjdk rd dlmZ nd dlmZ eZedd* dejkrd dlmZ nd dlmZ W dQ R X dddZG dd deZdd Zedkre  dS )    )with_statement)absolute_import)division)print_function)unicode_literalsN)contextmanager)escape   )LibtoolImporter   )StringIOZ UNINSTALLED_INTROSPECTION_SRCDIR)collect_attributes c             C   sp   |d krg }d| f }|d k	rDt |tr2|d}dt|| f }nd}t| |||t|t| }|| | S )Nz<%szUTF-8z>%s</%s>z/>)
isinstancebytesdecoder   r   len)tag_name
attributesdataZself_indentZself_indent_charprefixsuffixattrs r   5/usr/lib/gobject-introspection/giscanner/xmlwriter.pybuild_xml_tag1   s    


r   c               @   s   e Zd Zdd ZdddZdd Zdd	 Zd
d Zdd Zdd Z	d ddZ
dd Zd!ddZd"ddZdd Zed#ddZdS )$	XMLWriterc             C   s2   t  | _| jd g | _d| _d| _|   d S )Nz<?xml version="1.0"?>
r      )r   _datawrite
_tag_stack_indent_indent_unitenable_whitespace)selfr   r   r   __init__F   s    zXMLWriter.__init__Nc             C   s>   |d krg }t ||| j| jt|d }| d||f  d S )Nr   z<%s%s>)r   r!   _indent_charr   
write_line)r$   r   r   r   r   r   r   	_open_tagT   s
    zXMLWriter._open_tagc             C   s   |  d|f  d S )Nz</%s>)r'   )r$   r   r   r   r   
_close_tag[   s    zXMLWriter._close_tagc             C   s   d| _ d| _d S )Nr   
)r&   _newline_char)r$   r   r   r   r#   `   s    zXMLWriter.enable_whitespacec             C   s   d| _ d| _d S )N )r&   r+   )r$   r   r   r   disable_whitespaced   s    zXMLWriter.disable_whitespacec             C   s
   | j  S )z,Returns a unicode string containing the XML.)r   getvalue)r$   r   r   r   get_xmlh   s    zXMLWriter.get_xmlc             C   s   | j  dS )z8Returns a utf-8 encoded bytes object containing the XML.zutf-8)r   r.   encode)r$   r   r   r   get_encoded_xmll   s    zXMLWriter.get_encoded_xmlr,   TFc             C   s`   t |tr|d}|r t|}|rF| jd| j| j || jf  n| jd|| jf  d S )Nzutf-8z%s%s%sz%s%s)	r   r   r   r   r   r   r&   r!   r+   )r$   lineindentZ	do_escaper   r   r   r'   p   s    

zXMLWriter.write_linec             C   s   |  d|f  d S )Nz<!-- %s -->)r'   )r$   textr   r   r   write_comment}   s    zXMLWriter.write_commentc             C   s   |  t|||| j| j d S )N)r'   r   r!   r&   )r$   r   r   r   r   r   r   	write_tag   s    zXMLWriter.write_tagc             C   s8   |d krg }|  || | j| |  j| j7  _d S )N)r(   r    appendr!   r"   )r$   r   r   r   r   r   push_tag   s
    zXMLWriter.push_tagc             C   s(   |  j | j8  _ | j }| | |S )N)r!   r"   r    popr)   )r$   r   r   r   r   pop_tag   s    

zXMLWriter.pop_tagc             c   s&   |  || z
d V  W d |   X d S )N)r8   r:   )r$   r   r   r   r   r   
tagcontext   s    
zXMLWriter.tagcontext)N)r,   TF)N)N)N)__name__
__module____qualname__r%   r(   r)   r#   r-   r/   r1   r'   r5   r6   r8   r:   r   r;   r   r   r   r   r   D   s   



r   c              C   sx   t  } | d | d | d | dddddg |   |   |   |  }|d	}d
d l}|| d S )NZ
repository	namespaceenumerationmember)namewest)value7)zc:identifierZGTK_ANCHOR_WEST)z	glib:nickrC   r*   r   )r   r8   r:   r/   splitpprint)wxlinesrG   r   r   r   test   s"    




rK   __main__)NNr   r   )Z
__future__r   r   r   r   r   ossys
contextlibr   Zxml.sax.saxutilsr   Zlibtoolimporterr
   version_infomajorr   iostrZunicodeenvironZ
_giscannerr   Zgiscanner._giscannerr   objectr   rK   r<   r   r   r   r   <module>   s.   
 
V
