
    CPc                         d Z ddlmZ ddlZddlmZmZ ddlmZ  edddd	          Z ed
ddd          Z	 G d dej
                  Zedk    r e                                             dS dS )z1
Extract text and print it to the error console.
    )tostringN)TextElementFlowRoot)KeyDictleftrightcenter_x)lrmtopbottomcenter_y)tbr   c                   2    e Zd ZdZeefZd Zd Zd Z	d Z
dS )ExtractzExtract text and print outc                     |                     dddd           |                     dddd	           |                     d
ddd           d S )Nz-dz--directionlrzdirection to extract text)defaulthelpz-xz	--xanchorr   zhoriz point to comparez-yz	--yanchorr   zvertical point to compare)add_argument)selfparss     ./usr/share/inkscape/extensions/text_extract.pyadd_argumentszExtract.add_arguments-   s    -4O 	 	
 	
 	
 	+v4L 	 	
 	
 	
 	+u3N 	 	
 	
 	
 	
 	
    c                     t          | j        j                            t          t
                    | j                  D ]}|                     |           d S )N)key)sortedsvg	selectiongetr   r   _sortrecurser   nodes     r   effectzExtract.effect8   s]    H"";99tz
 
 
 	 	D LL	 	r   c                     |                                                     | j        j        | j        j        | j        j                  S )N)bounding_box
get_anchoroptionsxanchoryanchor	directionr&   s     r   r$   zExtract._sort?   s<      ""--L $,"68N
 
 	
r   c                    |j         |j        Y|D ]}|                    d          rd|_        t          j        t          |dd                                                     dS |D ]}|                     |           dS )z>Go through each node and recusively self call for all childrenNzsodipodi:role
unicodetext)encodingmethod)r3   tailr#   inkexerrormsgr   stripr%   )r   r'   childs      r   r%   zExtract.recurseD   s    9 DI$9 & &99_-- &!%EJN8D9VLLLRRTTUUUUU $ $U####$ $r   N)__name__
__module____qualname____doc__r   r   
select_allr   r(   r$   r%    r   r   r   r   (   s`        $$x(J	
 	
 	
  
 
 

	$ 	$ 	$ 	$ 	$r   r   __main__)r>   
lxml.etreer   r7   r   r   inkex.utilsr   XANYANEffectExtensionr   r;   runr@   r   r   <module>rH      s   2          ' ' ' ' ' ' ' '       gFz::;;gEz::;;%$ %$ %$ %$ %$e# %$ %$ %$P zGIIMMOOOOO r   