3
Kd              	   @   s  d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
 ddlmZmZ ddlmZmZmZmZmZmZmZmZ ddlmZmZmZ ddlmZ ddlmZ ejd	 eeB Z ed
ede eedej! edj! edej!  B  Z"e# Z$e	e
 e	dB Z%e%j&dd  e"eB eB eB eB Z'e%e'B eede%e'B   Z(e(j)  eeede  Z*e*j)  G dd deZ+e,dkrddl-Z-ej.e/e-j0d ddZ1e2e1j3 e2e1j4 dS )z
This implements the Tab Separated SPARQL Result Format

It is implemented with pyparsing, reusing the elements from the SPARQL Parser
    N)Optional
ZeroOrMoreLiteralParserElementParseExceptionSuppress
FollowedByLineEnd)ResultResultParser)VarSTRING_LITERAL1STRING_LITERAL2IRIREFBLANK_NODE_LABELNumericLiteralBooleanLiteralLANGTAG)CompParam	CompValue)r   )binary_typez 
literalstringlangz^^datatype	c             C   s   t S )N)
NONE_VALUE)x r   Z/var/www/html/virt/lib/python3.6/site-packages/rdflib/plugins/sparql/results/tsvresults.py<lambda>&   s    r!   c               @   s   e Zd ZdddZdd ZdS )TSVResultParserNc                s   t |jdtrtjd|}ytd}|j }ttj	|j
 dd|_g |_xZ|j }|s^P |j
d}|dkrrqPtj	|dd}|jjtt|j fdd	|D  qPW |S  tk
r } z.t|j td
|jd  d  t| W Y d d }~X nX d S )Nr   zutf-8ZSELECTT)parseAll
 c             3   s   | ]} j |V  qd S )N)convertTerm).0r   )selfr   r    	<genexpr>I   s    z(TSVResultParser.parse.<locals>.<genexpr>    ^)
isinstancereadr   codecs	getreaderr
   readlinelistHEADERparseStringstripvarsbindingsROWappenddictzipr   printlinecolumn)r(   sourcecontent_typerheaderr=   rowerrr   )r(   r    parse2   s,    
$
zTSVResultParser.parsec             C   sL   |t krd S t|trD|jdkr4t|j|j|jdS td|f n|S d S )Nr   )r   r   z"I dont know how to handle this: %s)	r   r-   r   name
RDFLiteralr   r   r   	Exception)r(   tr   r   r    r&   R   s    

zTSVResultParser.convertTerm)N)__name__
__module____qualname__rE   r&   r   r   r   r    r"   1   s   
 r"   __main__r+   Ztsv)format)5__doc__r/   	pyparsingr   r   r   r   r   r   r   r	   Zrdflib.queryr
   r   Zrdflib.plugins.sparql.parserr   r   r   r   r   r   r   r   Z!rdflib.plugins.sparql.parserutilsr   r   r   ZrdflibrG   sixr   setDefaultWhitespaceCharsStringleaveWhitespaceZ
RDFLITERALobjectr   ZEMPTYsetParseActionTERMr8   parseWithTabsr3   r"   rJ   sysrE   fileargvrA   r<   r6   r7   r   r   r   r    <module>   s6   ((

-

