
    Ng                     b    d dl Z d dlmZ d dlmZmZmZ d dlmZ d dl	m
Z
  G d de
          ZdS )    N)Path)IteratorPatternUnion)Document)
BaseLoaderc                       e Zd ZU dZ ej        dej        ej        z            Ze	e
d<   	 	 	 ddeeef         dedefd	Zd
edefdZd
edefdZd
edefdZdee         fdZdS )AcreomLoaderz%Load `acreom` vault from a directory.z^---\n(.*?)\n---\nFRONT_MATTER_REGEXUTF-8Tpathencodingcollect_metadatac                 4    || _         	 || _        	 || _        dS )zInitialize the loader.N)	file_pathr   r   )selfr   r   r   s       g/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/document_loaders/acreom.py__init__zAcreomLoader.__init__   s&     B 5 0@@    contentreturnc                 <   | j         si S | j                            |          }i }|rt|                    d                              d          }|D ]I}d|v rC|                    dd          \  }}|                                ||                                <   IJ|S )zEParse front matter metadata from the content and return it as a dict.   
:)r   r   searchgroupsplitstrip)r   r   matchfront_matterlineslinekeyvalues           r   _parse_front_matterz AcreomLoader._parse_front_matter    s    $ 	I'..w77 	KKNN((..E  $;;!%C!3!3JC05L-- r   c                 J    | j         s|S | j                            d|          S )z4Remove front matter metadata from the given content. )r   r   subr   r   s     r   _remove_front_matterz!AcreomLoader._remove_front_matter1   s+    $ 	N&**2w777r   c                     t          j        dd|          }t          j        dd|          }t          j        dd|          }|S )Nz\s*-\s\[\s\]\s.*|\s*\[\s\]\s.*r(   #z\[\[.*?\]\])rer)   r*   s     r   _process_acreom_contentz$AcreomLoader._process_acreom_content7   sC     &:BHH&r7++&W55r   c              #     K   t          t          | j                                      d                    }|D ]}t	          || j                  5 }|                                }d d d            n# 1 swxY w Y   |                     |          }|                     |          }| 	                    |          }t          |j                  t          |          d|}t          ||          V  d S )Nz**/*.md)r   )sourcer   )page_contentmetadata)listr   r   globopenr   readr&   r+   r/   strnamer   )r   pspftextr!   r3   s          r   	lazy_loadzAcreomLoader.lazy_load?   sA     $t~&&++I6677 	A 	AAa$-000  Avvxx                               33D99L,,T22D//55D af++A  H x@@@@@@@	A 	As   A22A6	9A6	N)r   T)__name__
__module____qualname____doc__r.   compile	MULTILINEDOTALLr   r   __annotations__r   r8   r   boolr   dictr&   r+   r/   r   r   r>    r   r   r
   r
   
   s0        //","*r|bi7# #    B
  !%	A ACIA A 	A A A A3 4    "8C 8C 8 8 8 8s s    A8H- A A A A A Ar   r
   )r.   pathlibr   typingr   r   r   langchain_core.documentsr   )langchain_community.document_loaders.baser   r
   rI   r   r   <module>rN      s    				       + + + + + + + + + + - - - - - - @ @ @ @ @ @GA GA GA GA GA: GA GA GA GA GAr   