
    ih                     Z    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y)    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y)AcreomLoaderz%Load `acreom` vault from a directory.z^---\n(.*?)\n---\nFRONT_MATTER_REGEXpathencodingcollect_metadatac                 2    || _         	 || _        	 || _        y)zInitialize the loader.N)	file_pathr   r   )selfr   r   r   s       i/var/www/html/dev/engine/venv/lib/python3.12/site-packages/langchain_community/document_loaders/acreom.py__init__zAcreomLoader.__init__   s#     B 5 0@    contentreturnc                 $   | j                   si S | j                  j                  |      }i }|rb|j                  d      j	                  d      }|D ]=  }d|v r7|j	                  dd      \  }}|j                         ||j                         <   >? |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KKN((.E $;!%C!3JC05L-  r   c                 V    | j                   s|S | j                  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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   s@     &&:BH&&r7+&&W5r   c              #     K   t        t        | j                        j                  d            }|D ]  }t	        || j
                        5 }|j                         }d d d        | j                        }| j                  |      }| j                  |      }t        |j                        t        |      d|}t        ||        y # 1 sw Y   qxY ww)Nz**/*.md)r   )sourcer   )page_contentmetadata)listr   r   globopenr   readr%   r*   r.   strnamer   )r   pspftextr    r2   s          r   	lazy_loadzAcreomLoader.lazy_load?   s     $t~~&++I67 	AAa$--0  Avvx   33D9L,,T2D//5D aff+A H x@@	A   s   A
CCA0CC	CN)zUTF-8T)__name__
__module____qualname____doc__r-   compile	MULTILINEDOTALLr   r   __annotations__r   r7   r   boolr   dictr%   r*   r.   r   r   r=    r   r   r
   r
   
   s    /","**r||bii7#  B
  !%	ACIA A 	A3 4 "8C 8C 8s s A8H- Ar   r
   )r-   pathlibr   typingr   r   r   langchain_core.documentsr   )langchain_community.document_loaders.baser   r
   rH   r   r   <module>rM      s'    	  + + - @GA: GAr   