ó
ůxTc           @   s\   d  d l  m Z d   Z d   Z e d  Z e d  Z d   Z e d  Z d   Z	 d	 S(
   i˙˙˙˙(   t   divisionc      	   C   să   d d l  } t |  j d   } |  j d  j   } t |  d k ro t | d  t | d j    } n d } g  | D] } | j   ^ q| } d j | j d j |  d d	 d | d
 d |  j   } |  j d  | S(   sá    Callback function. Given a simple list match, compact it and ensure
  that it wraps around by 80 characters.

  Params:
      match The regular expression match

  Returns:
      The string to replace the expression with

  i˙˙˙˙Ni   i   i    s   
t    iP   t   initial_indentt   subsequent_indent(   t   textwrapt   lent   groupt
   splitlinest   lstript   stript   joint   wrap(   t   matchR   R   t   linesR   t   lt   list_string(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/serialize/dump.pyt   compact_simple_list   s    'c         C   s   d d l  } | j d t |   S(   s    Find simple lists in the string and compact.

  Params:
      string The input JSON string

  Returns:
      The output JSON string

  i˙˙˙˙Ns    (.*"\w+".*:.*)(\[[^\{\}\[\]]*\])(   t   ret   subR   (   t   stringR   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/serialize/dump.pyt   compact_simple_lists1   s    
	c         C   s}   d d l  } d d l } d d l m } | t k rX | j | |   d d d t } n! | j | |   d d
 d t } | S(   s    Dump the given object to string.

  Params:
      obj The imageset
      compact Write in compact representation

  Returns:
      The JSON string

  i˙˙˙˙N(   t   imageset_to_dictt   indenti   t   ensure_asciit
   separatorst   ,t   :(   R   R   (   t   jsonR   t   dxtbx.serialize.imagesetR   t   Falset   dumpst   True(   t   objt   compactR   R   R   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/serialize/dump.pyt   imageset_to_string?   s    c         C   sZ   t  | t  r@ t | d   } | j t |  |   Wd QXn | j t |  |   d S(   s­    Dump the given object to file.

  Params:
      obj The imageset to dump
      outfile The output file name or file object
      compact Write in compact representation

  t   wN(   t
   isinstancet   strt   opent   writeR"   (   R    t   outfileR!   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/serialize/dump.pyt   imageset]   s    
c         K   s0   d d l  m } | |   } | j | |  d S(   s     Dump the given object to file. i˙˙˙˙(   t   DataBlockDumperN(   t   dxtbx.datablockR*   t   as_file(   R    R(   t   kwargsR*   t   dump(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/serialize/dump.pyt	   datablocko   s    c         C   sj   d d l  m } t | t  rP t | d   } | j | |  |   Wd QXn | j | |  |   d S(   sŹ    Dump the given object to file.

  Params:
      obj The crystal to dump
      outfile The output file name or file object
      compact Write in compact representation

  i˙˙˙˙(   t	   to_stringR#   N(   t   dxtbx.serialize.crystalR0   R$   R%   R&   R'   (   R    R(   R!   R0   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/serialize/dump.pyt   crystalu   s
    	c         C   s-   d d l  m } | |   } | j |  d S(   s    Dump an experiment list. i˙˙˙˙(   t   ExperimentListDumperN(   t&   dxtbx.model.experiment.experiment_listR3   R,   (   R    R(   R3   t   dumper(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/serialize/dump.pyt   experiment_list   s    N(
   t
   __future__R    R   R   R   R"   R)   R/   R2   R6   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/serialize/dump.pyt   <module>   s   	$		