ó
J‰]c           @   sB   d  d l  Z  d  d l Z d d l m Z d e f d „  ƒ  YZ d S(   iÿÿÿÿNi   (   t   StringIOt	   XMLwriterc           B   sã   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z g  d „ Z g  d „ Z	 d „  Z
 g  d	 „ Z g  d
 „ Z g  d „ Z g  d „ Z g  d „ Z d „  Z g  d „ Z g  d „ Z g  d „ Z g  d „ Z d „  Z d „  Z RS(   s#   
    Simple XML writer class.

    c         C   s(   d  |  _ t j d ƒ |  _ t |  _ d  S(   Ns   ["&<>
](   t   Nonet   fht   ret   compilet   escapest   Falset   internal_fh(   t   self(    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   __init__   s    	c         C   s   | |  _  t |  _ d  S(   N(   R   R   R   (   R	   t
   filehandle(    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _set_filehandle   s    	c         C   sI   t  | t ƒ r$ t |  _ | |  _ n! t |  _ t j | d d ƒ |  _ d  S(   Nt   ws   utf-8(   t
   isinstanceR    R   R   R   t   Truet   codecst   open(   R	   t   filename(    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _set_xml_writer"   s
    		c         C   s   |  j  r |  j j ƒ  n  d  S(   N(   R   R   t   close(   R	   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt
   _xml_close+   s    	c         C   s   |  j  j d ƒ d  S(   Ns8   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
(   R   t   write(   R	   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _xml_declaration0   s    	c         C   sR   x7 | D]/ \ } } |  j  | ƒ } | d | | f 7} q W|  j j d | ƒ d  S(   Ns    %s="%s"s   <%s>(   t   _escape_attributesR   R   (   R	   t   tagt
   attributest   keyt   value(    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _xml_start_tag5   s    c         C   sC   x( | D]  \ } } | d | | f 7} q W|  j  j d | ƒ d  S(   Ns    %s="%s"s   <%s>(   R   R   (   R	   R   R   R   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _xml_start_tag_unencoded=   s    c         C   s   |  j  j d | ƒ d  S(   Ns   </%s>(   R   R   (   R	   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _xml_end_tagF   s    c         C   sR   x7 | D]/ \ } } |  j  | ƒ } | d | | f 7} q W|  j j d | ƒ d  S(   Ns    %s="%s"s   <%s/>(   R   R   R   (   R	   R   R   R   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _xml_empty_tagJ   s    c         C   sC   x( | D]  \ } } | d | | f 7} q W|  j  j d | ƒ d  S(   Ns    %s="%s"s   <%s/>(   R   R   (   R	   R   R   R   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _xml_empty_tag_unencodedR   s    c         C   sp   | } x7 | D]/ \ } } |  j  | ƒ } | d | | f 7} q W|  j | ƒ } |  j j d | | | f ƒ d  S(   Ns    %s="%s"s   <%s>%s</%s>(   R   t   _escape_dataR   R   (   R	   R   t   dataR   t   end_tagR   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _xml_data_element[   s    c         C   s^   d } x7 | D]/ \ } } |  j  | ƒ } | d | | f 7} q W|  j j d | | f ƒ d  S(   Nt    s    %s="%s"s   <c%s t="s"><v>%d</v></c>(   R   R   R   (   R	   t   indexR   t   attrR   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _xml_string_elementf   s
    c         C   sm   d } x7 | D]/ \ } } |  j  | ƒ } | d | | f 7} q W|  j | ƒ } |  j j d | | f ƒ d  S(   NR&   s    %s="%s"s   <si><t%s>%s</t></si>(   R   R"   R   R   (   R	   t   stringR   R(   R   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _xml_si_elementp   s    c         C   s   |  j  j d | ƒ d  S(   Ns   <si>%s</si>(   R   R   (   R	   R*   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _xml_rich_si_element|   s    c         C   s^   d } x7 | D]/ \ } } |  j  | ƒ } | d | | f 7} q W|  j j d | | f ƒ d  S(   NR&   s    %s="%s"s   <c%s><v>%.16g</v></c>(   R   R   R   (   R	   t   numberR   R(   R   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _xml_number_element   s
    c         C   ss   d } x7 | D]/ \ } } |  j  | ƒ } | d | | f 7} q W|  j j d | |  j | ƒ |  j | ƒ f ƒ d  S(   NR&   s    %s="%s"s   <c%s><f>%s</f><v>%s</v></c>(   R   R   R   R"   (   R	   t   formulat   resultR   R(   R   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _xml_formula_element‹   s    c         C   s…   d } d } | r d } n  x7 | D]/ \ } } |  j  | ƒ } | d | | f 7} q" W|  j | ƒ } |  j j d | | | f ƒ d  S(   NR&   s    xml:space="preserve"s    %s="%s"s+   <c%s t="inlineStr"><is><t%s>%s</t></is></c>(   R   R"   R   R   (   R	   R*   t   preserveR   R(   t   t_attrR   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _xml_inline_string—   s    	c         C   s^   d } x7 | D]/ \ } } |  j  | ƒ } | d | | f 7} q W|  j j d | | f ƒ d  S(   NR&   s    %s="%s"s"   <c%s t="inlineStr"><is>%s</is></c>(   R   R   R   (   R	   R*   R   R(   R   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   _xml_rich_inline_string©   s    c         C   sœ   y |  j  j | ƒ s | SWn t k
 r. | SXt j d d | ƒ } t j d d | ƒ } t j d d | ƒ } t j d d | ƒ } t j d	 d
 | ƒ } | S(   Ns   [&]s   &amp;s   ["]s   &quot;s   [<]s   &lt;s   [>]s   &gt;s   [
]s   &#xA;(   R   t   searcht	   TypeErrorR   t   sub(   R	   t	   attribute(    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyR   ´   s    c         C   sr   y |  j  j | ƒ s | SWn t k
 r. | SXt j d d | ƒ } t j d d | ƒ } t j d d | ƒ } | S(   Ns   [&]s   &amp;s   [<]s   &lt;s   [>]s   &gt;(   R   R6   R7   R   R8   (   R	   R#   (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyR"   Ä   s    (   t   __name__t
   __module__t   __doc__R
   R   R   R   R   R   R   R   R    R!   R%   R)   R+   R,   R.   R1   R4   R5   R   R"   (    (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyR      s*   									
	
	(   R   R   t   compatibilityR    t   objectR   (    (    (    s3   lib/python2.7/site-packages/xlsxwriter/xmlwriter.pyt   <module>   s   