
    3yi.                        d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ d dlmZmZ d dlmZ d dlmZmZ ddlm Z  ddl!m"Z" ddl#m$Z$m%Z%  G d dee"         Z&y)    )annotationsN)pass_context)Context)MkDocsConfig)PluginError)utils)
BasePluginevent_priority)StructureItem)Files)LinkSection)get_theme_dir)ParseResulturlparse   )ProjectsBuilder)ProjectsConfig)ProjectProjectLinkc                       e Zd ZU dZded<    fdZd Zd Zd Zd Z	 e
d	      d
        Z e
d	      d        Zd ZddZddZ xZS )ProjectsPluginNr   builderc                X    t        |   |i | d| _        d| _        d t        _        y )NFc                    | S N )_s    b/var/www/html/content_weaver/venv/lib/python3.12/site-packages/material/plugins/projects/plugin.py<lambda>z)ProjectsPlugin.__init__.<locals>.<lambda>A   s    !     )super__init__is_serveis_dirtyr   clean_directory)selfargskwargs	__class__s      r   r#   zProjectsPlugin.__init__6   s/    $)&)  !,r!   c               &    |dk(  | _         || _        y )Nserve)r$   r%   )r'   commanddirtys      r   
on_startupzProjectsPlugin.on_startupD   s    7*r!   c                   | j                   j                  sy | j                   j                  d u }|r| j                   j                  sy | j                   j                  s8t        j
                  j                  |j                        | j                   _        i | _        t        j
                  j                  | j                   j                  | j                   j                  d      | _        t        j
                  j                  | j                        r9	 t        | j                        5 }t        j                  |      | _        d d d        |ro| j                   st#        || j                         | _        dt        j
                  j%                  |j                        i| _        | j                   j&                  j)                         D ]b  }t        j
                  j%                  |j*                  j                   j                        }|| j                  |j*                  j,                  <   d t	        j.                  t        j
                  j                  | j                        d       t        | j                  d      5 }|j1                  t        j2                  | j                  dd             d d d        y y # 1 sw Y   }xY w#  Y xY w# 1 sw Y   y xY w)Nzmanifest.json.T)exist_okw   )indent	sort_keys)configenabledprojects_root_dirprojectsospathdirnameconfig_file_pathmanifestjoin	cache_dirmanifest_fileisfileopenjsonloadr   r   relpathrootjobsprojectslugmakedirswritedumps)r'   r7   rH   fjobr<   s         r   	on_configzProjectsPlugin.on_configN   s   {{"" {{,,4,, {{,,,.GGOO''-DKK)
 )+WW\\KK))KK!!
 77>>$,,-$,,- 1$(IIaLDM1 <<.vt{{C "277??63J3J#KMDM||((--/ 7wws{{'9'9'J'JK26ckk../7
 KK(:(:;Md((#. Q!

4==1$OPQ Q 1 1$Q Qs0   K +KK 2KKK KKc                    | j                   j                  sy | j                   j                  r| j                  sy | j                  j	                  | j
                  | j                         y r   )r7   r8   r:   r   buildr$   r%   )r'   r7   s     r   on_pre_buildzProjectsPlugin.on_pre_build   sH    {{"" {{##4<< 	4==$--8r!   c               T   | j                   j                  sy | j                   j                  r| j                  ry | j                   j                  rt        |j                  j                        }t        g       t        d| j                         }|j                  j                  |j                   j                  d   k7  ry |j                         D ]@  }|j                  j                  |      s|j                  |       j                  |       B d }d }| j                  j!                         D ]  \  }	}t"        j$                  j'                  | j                   j(                  |      }
|t"        j$                  j+                  |j,                  | j                   j(                        k(  rt        |
| j                   |	      }d|	k(  st        |
| j                   |	      } |j%                  |      |j.                  d   t0        dfd       }||j.                  d<   y y )Nz
mkdocs.ymlnamer1   urlc                v    |r.j                  |      rt        j                   | |            S  | |      S r   )get_file_from_path	posixpathr@   )contextrW   hoistr<   
url_filters     r   url_filter_with_hoistingz7ProjectsPlugin.on_env.<locals>.url_filter_with_hoisting   s8    533C8$>>$
7C0HII%gs33r!   )r[   r   rW   z
str | None)r7   r8   r:   r   hoistingr   themerV   r   r   media_filesabs_src_path
startswithremoveappendr?   itemsr;   r<   r@   r9   rG   r>   filtersr   )r'   envr7   filesr`   rH   filesourcetargetrefbaser^   r\   r<   r]   s               @@@r   on_envzProjectsPlugin.on_env   s   {{"" {{##t|| ;;!&,,"3"34E"IE <5D||  DKK$5$5f$== ))+ '$$//6LL&LL&' &*F%)F!]]002 =	Tww||DKK$A$A4H277??++T[[-J-J  %T4;;<F#:$T4;;<F= ;;v&D U+J 4 4 ":CKK[  r!   ic                   | j                   j                  sy | j                   j                  sy | j                  |j                  |       y r   r7   r8   r:   _replacerf   )r'   r[   pager7   navs        r   on_page_contextzProjectsPlugin.on_page_context   s8    {{"" {{## 	cii(r!   c                   | j                   j                  sy | j                   j                  sy | j                  |d   j                  |       y )Nrt   rq   )r'   r[   template_namer7   s       r   on_template_contextz"ProjectsPlugin.on_template_context   s>    {{"" {{## 	gen**F3r!   c               ~    | j                   j                  r'| j                  j                  || j                         y y r   )r7   r8   r   r,   r%   )r'   serverr7   r   s       r   on_servezProjectsPlugin.on_serve   s,    ;;LLvt}}5 r!   c                   t        |      D ]  \  }}t        |t              r| j                  |j                  |       t        |t
              sCt        |j                        }|j                  dk(  sh| j                  ||      \  }}|j                  j                  s|dz  }t        |j                  xs |j                  j                  |      ||<    y )NrJ   z
index.html)	enumerate
isinstancer   rr   childrenr   r   rW   scheme_resolve_project_urlr7   use_directory_urlsr   title	site_name)r'   rf   r7   indexitemrW   rJ   s          r   rr   zProjectsPlugin._replace   s    $U+ 	KE4 $(dmmV4 $%txx(::*#'#<#<S&#ILGS #>><<|+ $/

>gnn&>&>$E%L#	r!   c                   |j                   dk7  rt        d|j                   d      |j                  }|j                  d      r|nd| }d }d }| j                  j                         D ]  \  }}t        j                   j                  | j                  j                  |      }|t        j                   j                  |j                  | j                  j                        k(  rt        || j                  |      }||k(  st        || j                  |      } |st        d| d      ||j                  |      fS )N zWCouldn't resolve project URL: paths currently not supported
Please only use 'project://'r1   zCouldn't find project ')r<   r   hostnamerc   r?   rf   r;   r@   r7   r9   rG   r>   r   )	r'   rW   r7   rK   rk   rl   rm   rj   rn   s	            r   r   z#ProjectsPlugin._resolve_project_url  s'    88r>..1ll^1>  ||s+t1TF "&!%,,. 	9IC77<< = =tDDrww'')F)F  !t{{C8s{ t{{C8	9  7vQ?@@ v{{6***r!   )rf   zlist[StructureItem]r7   r   )rW   URLr7   r   )__name__
__module____qualname__r   __annotations__r#   r/   rQ   rT   ro   r
   ru   rx   r{   rr   r   __classcell__)r*   s   @r   r   r   0   sl      $G_#,1Qj	97:v D	) 	) D	4 	460+r!   r   )'
__future__r   rE   r;   rZ   jinja2r   jinja2.runtimer   mkdocs.config.defaultsr   mkdocs.exceptionsr   mkdocsr   mkdocs.pluginsr	   r
   mkdocs.structurer   mkdocs.structure.filesr   mkdocs.structure.navr   r   mkdocs.utilsr   urllib.parser   r   r   r   r   r7   r   	structurer   r   r   r   r!   r   <module>r      sP   * #  	   " / )  5 * ( . & 5 $ " +t+Z/ t+r!   