3
‰d>
  ã               @   sŽ   d 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gZ	G dd„ deƒZ
G dd	„ d	e
ƒZd
d„ Zdd„ Zdd„ Zdd„ Zejdeƒ dS )z}
N-Triples RDF graph serializer for RDFLib.
See <http://www.w3.org/TR/rdf-testcases/#ntriples> for details about the
format.
é    )ÚLiteral)Ú
Serializer)ÚbNÚNTSerializerc               @   s"   e Zd ZdZdd„ Zddd„ZdS )r   z3
    Serializes RDF graphs to NTriples format.
    c             C   s   t j| |ƒ d| _d S )NÚascii)r   Ú__init__Úencoding)ÚselfÚstore© r   ú?/tmp/pip-build-7vycvbft/rdflib/rdflib/plugins/serializers/nt.pyr      s    zNTSerializer.__init__Nc             K   sv   |d k	rt jdƒ |d k	r6|jƒ | jjƒ kr6t jdƒ | j}x&| jD ]}|jt|ƒj| jdƒƒ qDW |jtdƒƒ d S )Nz#NTSerializer does not support base.z*NTSerializer does not use custom encoding.Ú_rdflib_nt_escapeÚ
)	ÚwarningsÚwarnÚlowerr   r
   ÚwriteÚ_nt_rowÚencoder   )r	   ÚstreamÚbaser   ÚargsÚtripler   r   r   Ú	serialize   s    

zNTSerializer.serialize)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r      s   c               @   s   e Zd ZdZdd„ ZdS )ÚNT11Serializerze
    Serializes RDF graphs to RDF 1.1 NTriples format.

    Exactly like nt - only utf8 encoded.
    c             C   s   t j| |ƒ d S )N)r   r   )r	   r
   r   r   r   r   +   s    zNT11Serializer.__init__N)r   r   r   r   r   r   r   r   r   r   $   s   r   c             C   s^   t | d tƒr4d| d jƒ | d jƒ t| d ƒf S d| d jƒ | d jƒ | d jƒ f S d S )Né   z%s %s %s .
r   é   )Ú
isinstancer   Zn3Ú_quoteLiteral)r   r   r   r   r   /   s    


r   c             C   sJ   t | ƒ}| jr*| jrtdƒ‚d|| jf S | jr>d|| jf S d| S dS )z0
    a simpler version of term.Literal.n3()
    z"Literal has datatype AND language!z%s@%sz%s^^<%s>z%sN)Ú_quote_encodeÚlanguageÚdatatypeÚ	Exception)ÚlÚencodedr   r   r   r"   ;   s    r"   c             C   s(   d| j ddƒj ddƒj ddƒj dd	ƒ S )
Nz"%s"ú\z\\r   z\nú"z\"úz\r)Úreplace)r'   r   r   r   r#   L   s    r#   c                s8   dd„ ‰ | j | j| j… }dj‡ fdd„|D ƒƒ| jfS )zu
    Do unicode char replaces as defined in https://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntrip_strings
    c             S   s    t | ƒ} | dkrdnd}||  S )Niÿÿ  z\u%04Xz\U%08X)Úord)ÚcÚfmtr   r   r   Ú_replace_singleX   s    z3_nt_unicode_error_resolver.<locals>._replace_singleÚ c             3   s   | ]}ˆ |ƒV  qd S )Nr   )Ú.0r.   )r0   r   r   ú	<genexpr>^   s    z-_nt_unicode_error_resolver.<locals>.<genexpr>)ÚobjectÚstartÚendÚjoin)ÚerrÚstringr   )r0   r   Ú_nt_unicode_error_resolverS   s    r:   r   )r   Zrdflib.termr   Zrdflib.serializerr   Úsixr   r   ÚcodecsÚ__all__r   r   r   r"   r#   r:   Úregister_errorr   r   r   r   Ú<module>   s   