
    3fi                     :    d dl mZmZmZ d dlmZ  G d de      Zy)    )AnyListTuple)CodeSegmenterc                   b     e Zd ZdZdef fdZdefdZdedefdZ	de
e   fdZdefd	Z xZS )
JavaScriptSegmenterzCode segmenter for JavaScript.codec                     t         |   |       | j                  j                         | _        	 dd l}y # t        $ r t        d      w xY w)Nr   zVCould not import esprima Python package. Please install it with `pip install esprima`.)super__init__r	   
splitlinessource_linesesprimaImportError)selfr	   r   	__class__s      ~/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_community/document_loaders/parsers/language/javascript.pyr   zJavaScriptSegmenter.__init__   sO     II002	 	@ 	s	   6 Areturnc                 n    dd l }	 |j                  | j                         y# |j                  $ r Y yw xY w)Nr   TF)r   parseScriptr	   Error)r   r   s     r   is_validzJavaScriptSegmenter.is_valid   s5    			*}} 		s   " 44nodec                     |j                   j                  j                  dz
  }|j                   j                  j                  }dj	                  | j
                  ||       S )N   
)locstartlineendjoinr   )r   r   r   r    s       r   _extract_codez!JavaScriptSegmenter._extract_code    sI    ##a'hhllyy**5566    c                    dd l }|j                  | j                  d      }g }|j                  D ]Y  }t	        ||j
                  j                  |j
                  j                  f      s:|j                  | j                  |             [ |S )Nr   Tr   )
r   r   r	   body
isinstancenodesFunctionDeclarationClassDeclarationappendr"   )r   r   treefunctions_classesr   s        r   extract_functions_classesz-JavaScriptSegmenter.extract_functions_classes%   s    ""499$"7II 	CD22GMM4R4RS "((););D)AB	C ! r#   c                 $   dd l }|j                  | j                  d      }| j                  d d  }g }|j                  D ]  }t        ||j                  j                  |j                  j                  f      s:|j                  j                  j                  dz
  |j                  j                  j                  }}d||    ||<   |j                  |dz   |f        t        |      D ]  \  }}||dz   |=  dj                  d |D              S )Nr   Tr%   r   z// Code for: r   c              3       K   | ]  }|  y w)N ).0r   s     r   	<genexpr>z4JavaScriptSegmenter.simplify_code.<locals>.<genexpr>H   s     ;$;s   )r   r   r	   r   r&   r'   r(   r)   r*   r   r   r   r    r+   reversedr!   )r   r   r,   simplified_linesindices_to_delr   r   r    s           r   simplify_codez!JavaScriptSegmenter.simplify_code4   s   ""499$"7,,Q/02II 	8D22GMM4R4RS "XX^^0014dhhll6G6Gs,9:J5:Q9R*S '%%uqy#&67	8 #>2 	2JE3 S1	2 yy;*:;;;r#   )__name__
__module____qualname____doc__strr   boolr   r   r"   r   r.   r7   __classcell__)r   s   @r   r   r      sM    (
S 
$ 7# 7# 7
!49 !<s <r#   r   N)typingr   r   r   Dlangchain_community.document_loaders.parsers.language.code_segmenterr   r   r1   r#   r   <module>rA      s    # #
@<- @<r#   