U
    >Keo!                     @   s   d dl mZmZ ddlmZ ddlmZ G dd deZG dd deZ	G d	d
 d
eZ
G dd deZG dd deZd ddddddd dddddddZG dd deZG dd deZdd ZdS )    )unpackpack   )BIFFRecords)xrangec                   @   s(   e Zd ZddddgZdd Zdd Zd	S )
StrCellrowxcolxxf_idxsst_idxc                 C   s   || _ || _|| _|| _d S N)r   r	   r
   r   )selfr   r	   r
   r    r   -/tmp/pip-unpacked-wheel-x1drl5t4/xlwt/Cell.py__init__
   s    zStrCell.__init__c                 C   s   t ddd| j| j| j| jS )Nz<5HL   
   )r   r   r	   r
   r   r   r   r   r   get_biff_data   s    zStrCell.get_biff_dataN__name__
__module____qualname__	__slots__r   r   r   r   r   r   r      s   r   c                   @   s&   e Zd ZdddgZdd Zdd ZdS )		BlankCellr   r	   r
   c                 C   s   || _ || _|| _d S r   )r   r	   r
   )r   r   r	   r
   r   r   r   r      s    zBlankCell.__init__c                 C   s   t ddd| j| j| jS )N<5H     )r   r   r	   r
   r   r   r   r   r      s    zBlankCell.get_biff_dataNr   r   r   r   r   r      s   
r   c                   @   s(   e Zd ZddddgZdd Zdd Zd	S )
MulBlankCellr   colx1colx2r
   c                 C   s   || _ || _|| _|| _d S r   )r   r   r    r
   )r   r   r   r    r
   r   r   r   r   #   s    zMulBlankCell.__init__c                 C   s   t | j| j| j| j S r   )r   ZMulBlankRecordr   r   r    r
   getr   r   r   r   r   )   s
      zMulBlankCell.get_biff_dataNr   r   r   r   r   r       s   r   c                   @   s0   e Zd ZddddgZdd Zdd Zd	d
 ZdS )
NumberCellr   r	   r
   numberc                 C   s    || _ || _|| _t|| _d S r   )r   r	   r
   floatr#   r   r   r	   r
   r#   r   r   r   r   0   s    zNumberCell.__init__c              	   C   s   d}| j }d|  krdk rFn n$t|}||krFd|d> B }d|fS |d }d|  krbdk rn n.tt|d}|d |krd|d> B }d|fS dtd	d
d| j| j| j|fS )Nr   i   i       r   d   g      Y@   z<5Hdi     )r#   introundr   r   r   r	   r
   )r   Z
rk_encodednumZinumtempZitempr   r   r   get_encoded_data6   s    zNumberCell.get_encoded_datac                 C   s.   |   \}}|r*tddd| j| j| j|S |S )N<5Hi~  r   )r.   r   r   r	   r
   )r   isRKvaluer   r   r   r   h   s    zNumberCell.get_biff_dataN)r   r   r   r   r   r.   r   r   r   r   r   r"   -   s   2r"   c                   @   s(   e Zd ZddddgZdd Zdd Zd	S )
BooleanCellr   r	   r
   r#   c                 C   s   || _ || _|| _|| _d S r   )r   r	   r
   r#   r%   r   r   r   r   q   s    zBooleanCell.__init__c                 C   s   t | j| j| j| jd S )Nr   r   ZBoolErrRecordr   r	   r
   r#   r!   r   r   r   r   r   w   s       zBooleanCell.get_biff_dataNr   r   r   r   r   r3   n   s   r3               $   *   )r   r5   r6   r7   r8   r9   r:   z#NULL!z#DIV/0!z#VALUE!z#REF!z#NAME?z#NUM!z#N/A!c                   @   s(   e Zd ZddddgZdd Zdd Zd	S )
	ErrorCellr   r	   r
   r#   c                 C   sF   || _ || _|| _zt| | _W n  tk
r@   td| Y nX d S )NzIllegal error value (%r))r   r	   r
   error_code_mapr#   KeyError	Exception)r   r   r	   r
   Zerror_string_or_coder   r   r   r      s    zErrorCell.__init__c                 C   s   t | j| j| j| jd S )Nr   r4   r   r   r   r   r      s       zErrorCell.get_biff_dataNr   r   r   r   r   r;      s   	r;   c                   @   s,   e Zd ZdddddgZdddZd	d
 ZdS )FormulaCellr   r	   r
   frmla
calc_flagsr   c                 C   s"   || _ || _|| _|| _|| _d S r   )r   r	   r
   r@   rA   )r   r   r	   r
   r@   rA   r   r   r   r      s
    zFormulaCell.__init__c                 C   s$   t | j| j| j| j | j S r   )	r   ZFormulaRecordr   r	   r
   r@   ZrpnrA   r!   r   r   r   r   r      s       zFormulaCell.get_biff_dataN)r   r   r   r   r   r   r?      s   
r?   c              
   C   sv  g }t |}d}||k rl|| \}}t|trf| \}}|sT|| |d7 }q||jfg}	t}
n0t|tr~|jg}	t}
n||  |d7 }q|}|}d}t|d |D ]}|| \}}||d kr|} qDt||
s|} qD|
tkr*| \}}|s|}|d } qD|	||jf n|	|j |}q|d }|
tkr||kr|	d \}}|t	ddd| ||| nT|| d }|t	ddd	| d	 | | |d

dd |	D  |t	d| n||kr|	d }|t	ddd	| || nT|| d }|t	ddd| d	 | | |d

dd |	D  |t	d| |rf|| |}qd

|S )Nr   r    r/   r0   r   z<4H   r       c                 s   s   | ]\}}t d ||V  qdS )z<HiNr   ).0r2   r
   r   r   r   	<genexpr>   s     z+_get_cells_biff_data_mul.<locals>.<genexpr><Hr   r      r&   c                 s   s   | ]}t d |V  qdS )rH   NrE   )rF   r
   r   r   r   rG      s     )len
isinstancer"   r.   appendr
   r   r   r   r   join)r   Z
cell_itemspiecesZnitemsiZicolxZicellr1   r2   ZmuldatatargetZlastcolxjZpacked_recordZjcolxZjcellZnextir
   Zncr   r   r   _get_cells_biff_data_mul   sv    









rR   N)structr   r   rB   r   compatr   objectr   r   r   r"   r3   r<   r;   r?   rR   r   r   r   r   <module>   s2   A