o
    i
                     @   s   d Z ddlZdddZdS )zV
Copied from https://github.com/neonbjb/tortoise-tts/blob/main/tortoise/utils/text.py
    N   ,  c                    s
  t ddt ddt ddg dd g d	td
  fdd}fdd} fdd}k r|d
}t |krtdkrft |d krfd	  }||  n |dvrdkrt |kr|d	}|dvrdkrt |kst|  nbs|dv s|dkr|d
dv rՈtd
 k rt |k r|d
dv r|d
}td
 k rt |k r|d
dv s t |kr|  nr|d
dkr|ddv r|d  k sB  dd D dd D S )zNSplit text it into chunks of a desired length trying to keep sentences intact.z\n\n+
z\s+ u   [“”]"F r   c                    sb   | dk }t t| D ]"}|rd8  d d  n
d7   7   dkr, q
 S )Nr   r   r   r   )rangeabs)deltais_neg_)currentin_quotepostext O/home/ubuntu/.local/lib/python3.10/site-packages/soprano/utils/text_splitter.pyseek   s   z&split_and_recombine_text.<locals>.seekc                    s$   |  }| k r|dkr| S dS )Nr   r   r   )r   p)end_posr   r   r   r   peek#   s   z&split_and_recombine_text.<locals>.peekc                      s      d g d S )Nr   )appendr   )r   rv	split_posr   r   commit'   s   
z(split_and_recombine_text.<locals>.commitr      z!?.
 z!?
.z
 z!?.c                 S   s   g | ]}|  qS r   )strip.0sr   r   r   
<listcomp>I   s    z,split_and_recombine_text.<locals>.<listcomp>c                 S   s(   g | ]}t |d krtd|s|qS )r   z^[\s\.,;:!?]*$)lenrematchr   r   r   r   r"   J   s   ( )r$   subr#   r   )r   desired_length
max_lengthr   r   r   cdr   )r   r   r   r   r   r   r   r   split_and_recombine_text   sL    ((


r+   )r   r   )__doc__r$   r+   r   r   r   r   <module>   s    