
    3yiB                       d dl mZ d dlZd dlZd dlZd dl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 d d	lmZ d d
lmZmZ d dlmZ d dlmZmZmZ d dlmZmZm Z  d dl!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m"Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0 d dlm1Z1 ddl2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8 ddl9m9Z9 ddl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA  G d dee8         ZBd dZCd!dZD ej                  d      ZFy)"    )annotationsN)format_dateformat_datetime)copy)datetimetimezone)pass_context)Context)MkDocsConfig)PluginError)
BasePluginevent_priority)StructureItem)FileFilesInclusionLevel)Link
NavigationSection)Page)
AnchorLinkTableOfContents)	copy_fileget_relative_url)rmtree)mkdtemp)urlparse)
SafeLoader   )	view_name)AuthorAuthors)
BlogConfig)readtime)ArchiveCategoryProfileExcerptPostView	Referencec                      e Zd ZdZ fdZd Zd Z ed      d        Z ed      d        Z	 ed      d        Z
d	 Zd
 Z ed      d        Zd Zd5dZd6dZd7dZd6dZd8dZd9dZd:dZd;dZd<dZd<dZd<dZd=dZd>dZd?dZd@dZdAdZd9dZdBdZ dCd Z!dDd!Z"d9d"Z#d9d#Z$d9d$Z%dEd%Z&dEd&Z'dFd'Z(dGd(Z)dHd)Z*dId*Z+dJd+Z,dJd,Z-dJd-Z.dJd.Z/d5d/Z0dFd0Z1dd1dKd2Z2dLd3Z3dMd4Z4 xZ5S )N
BlogPluginTc                ^    t        |   |i | d| _        d| _        t	               | _        y NF)super__init__is_serveis_dirtyr   temp_dir)selfargskwargs	__class__s      ^/var/www/html/content_weaver/venv/lib/python3.12/site-packages/material/plugins/blog/plugin.pyr1   zBlogPlugin.__init__C   s0    $)&)   	    c               &    |dk(  | _         || _        y )Nserve)r2   r3   )r5   commanddirtys      r9   
on_startupzBlogPlugin.on_startupN   s    7*r:   c                    | j                   j                  sy |  | j                   j                  r| j                  |      | _        | j                  r)| j                   j
                  rd| j                   _        y y y )NT)configenabledauthors_resolve_authorsr2   draft_on_servedraft)r5   rA   s     r9   	on_configzBlogPlugin.on_configS   s`    {{"" 	 ;;008DL ==T[[77 $DKK 8=r:   ic               P   | j                   j                  sy t        j                  | j                   j                        }|j
                  }| j                   j                  j                  |      }t        j                  |      }|j                         D ]  }|j                  j                  |      s|j                  j                  ||      |_        t        j                  j                  ||j                         |_        |j$                  j                  ||      |_         | j'                  ||      | _        t+        | j-                  ||      d d      | j(                  _        | j                   j0                  r7| j3                  ||      }| j(                  j4                  j7                  |       | j                   j8                  rz| j;                  ||      }| j(                  j4                  j7                  t+        t+        |t<              | j                   j>                  | j                   j@                               | j                   jB                  r7| jE                  ||      }| j(                  j4                  j7                  |       | jG                  | j(                        D ]G  }| jI                  |      s| jK                  |||      D ]  }	|jL                  jO                  |	        I tP        jR                  | j(                  jT                  _+        y )Nblogc                n    | j                   j                  | j                   j                  j                  fS N)rA   pindatecreated)posts    r9   <lambda>z%BlogPlugin.on_files.<locals>.<lambda>   s'      ((  r:   T)keyreverse)rR   ),rA   rB   	posixpathnormpathblog_dirsite_dirpost_dirformatmedia_filessrc_uri
startswithdest_urireplaceospathjoin	dest_pathabs_dest_pathurl_resolverJ   sorted_resolve_postspostsarchive_generate_archiveviewsextend
categories_generate_categoriesr    categories_sort_bycategories_sort_reverseauthors_profiles_generate_profiles_resolve_views_config_pagination_generate_pagespagesappendr   INCLUDEDfile	inclusion)
r5   filesrA   rootsiter`   ry   rk   viewpages
             r9   on_fileszBlogPlugin.on_filesk   sh   {{"" !!$++"6"67 {{##**$*7!!$' %%' 	>D<<**40 "&!6!6tT!BDM!#dDNN!CD!%!1!1$!=DH	> MM%0	 v. 
		 ;;**659EIIOO""5) ;;!!--fe<E IIOO""6uI.++88++==$  ;;''++FE:EIIOO""5) ''		2 	,D&&t, 00vuE ,DJJ%%d+,	, $2#:#:		 r:   c                  | j                   j                  sy | j                  j                  sB| j                   j                  dk7  r)t
        j                  | j                  j                  _        | j                  | j                  d gt        | j                  j                        d        | j                  j                  D ]!  }t
        j                  |j                  _        # | j                  | j                        D ]q  }| j                  j                  j                  |j                  _        |j                  D ]1  }| j                  j                  j                  |j                  _        3 s | j                   j                  r| j                  | j                   j                   |      }| j                  j"                  D cg c]  }t%        |t&              s| }	}| j                  j                  j                  j)                         r'| j+                  | j                  t-        ||	      |       | j                   j.                  r| j                  | j                   j0                  |      }| j                  j"                  D cg c]  }t%        |t2              s| }	}| j                  j                  j                  j)                         r)|	r'| j+                  | j                  t-        ||	      |       | j                   j4                  r| j                  | j                   j6                  |      }| j                  j"                  D cg c]  }t%        |t8              s| }	}| j                  j                  j                  j)                         r)|	r'| j+                  | j                  t-        ||	      |       | j                  | j                        D ]b  }| j;                  |      st=        dt?        |j                              D ],  }
| jA                  |j                  ||j                  |
          . d y c c}w c c}w c c}w )N.r   )!rA   rB   rJ   parentrV   r   
NOT_IN_NAVry   rz   _attachreversedrh   rs   rv   ri   
_translatearchive_namerk   
isinstancer%   	is_in_nav
_attach_tor   rm   categories_namer&   rq   authors_profiles_namer'   rt   rangelen
_attach_at)r5   navrA   r{   rP   r~   r   title_rk   ats              r9   on_navzBlogPlugin.on_nav   s   {{"" yyDKK$8$8C$?'5'@'@DIINN$ 	TYY H(A H4 HIIIOO 	<D"0";";DII	< ''		2 	?D"&))..":":DII

 ?&*iinn&>&>		#?	? ;;OODKK$<$<fEE $		J1:a3IQJEJ yy~~''113		75%+@#F ;;!!OODKK$?$?HE $		K1:a3JQKEK yy~~''113		75%+@#F ;;''OODKK$E$EvNE $		J1:a3IQJEJ yy~~''113		75%+@#F ''		2 	GD&&t,3tzz?3 GBOODKKtzz"~FG	G3 K L Ks$   Q!QQ&QQ-Qc          	        | j                   j                  sy || j                  j                  vr| j	                  |      sy | j                   j
                  sd| j                  |      }|| j                  | j                        v r6t        |t              sJ ||k7  r|j                  xs |j                  }d| S y | j                   j                  r`|j                   j                  D ]G  }|| j                  vrt        d| d      |j                  j                  | j                  |          I | j                   j                  }| j                   j                   }	| j                   j"                  }
||j$                  vr| j                   j&                  dk(  rrt(        j*                  j-                  |j.                        }t(        j*                  j-                  |j0                  j2                  |      }t        d| d| d| d      t5        |||      |_        |j                  d |	 |j6                  _        |j8                  d |
 |j6                  _        y )N# zCouldn't find author ''requiredzCouldn't find 'z' in post '' in ')rA   rB   rJ   rh   rt   pagination_keep_content_resolve_originalrs   r   r*   _title_from_renderr   rC   r   rw   post_excerpt_separatorpost_excerpt_max_authorspost_excerpt_max_categoriesmarkdownpost_excerptr_   r`   relpathdocs_dirry   abs_src_pathr(   excerptrm   )r5   r   r   rA   r{   r~   nameid	separatormax_authorsmax_categoriesdocsr`   s                r9   on_page_markdownzBlogPlugin.on_page_markdown   s   {{"" tyy&**40 ;;66--d34..tyy99 &dD111t|#66D$**!#D6{*  ;;kk)) 6T\\)%(>rd!&DEE ##DLL$456 ;;	==@@ DMM){{'':5wwv7wwtyy'='=tD!%i[D6vQO  #*$">"&,,|"<"&///>"Br:   c               "   | j                   j                  sy || j                  j                  vry | j                   j                  rI| j                   j
                  }|j                   j                  st        ||      |j                   _        y y y rL   )rA   rB   rJ   rh   post_readtimepost_readtime_words_per_minuter$   )r5   htmlr   rA   r{   words_per_minutes         r9   on_page_contentzBlogPlugin.on_page_content1  sq    {{"" tyy& ;;$$#{{II;;'''/6F'G$ ( %r:   c                    j                   j                  sy  j                  j                  D ]  } j	                  ||        d fd}|j
                  d   t        d fd       }||j
                  d<   ||j
                  d<   y )NrN   c                (    j                  |       S rL   )_format_date_for_post)rN   rA   r5   s    r9   date_filterz&BlogPlugin.on_env.<locals>.date_filterJ  s    --dF;;r:   rd   c                    | d   }t        |t              r,j                  |      }|j                  |k(  r|j                  } | |      S )Nr   )r   r*   r   rd   )contextrd   r   r~   r5   
url_filters       r9   url_filter_with_paginationz5BlogPlugin.on_env.<locals>.url_filter_with_paginationS  sK    6?D $%--d388s?((C gs++r:   )rN   r   )r   r
   rd   z
str | None)rA   rB   rJ   rh   _generate_linksfiltersr	   )r5   envrA   r{   rP   r   r   r   s   ` `    @r9   on_envzBlogPlugin.on_envA  s    {{"" IIOO 	6D  vu5	6	<
 [['
 
	, 
	, *F8Er:   ic                     j                   j                  sy  j                  |      }| j                   j                        vry  j                  |      \  }d fd}||d<   r||d<   y d |d<   y )Nc                ~     j                   dj                  j                  j                  j                  d| S )N)rY   show_if_single_page )pagerrA   pagination_formatpagination_if_single_page)r6   
paginationr5   s    r9   r   z)BlogPlugin.on_page_context.<locals>.pagerx  sA    #:## 66&*kk&K&K  r:   rh   r   )r6   object)rA   rB   r   rs   rJ   _render)	r5   r   r   rA   r   r~   rh   r   r   s	   `       @r9   on_page_contextzBlogPlugin.on_page_contexti  sz    {{"" %%d+t**49955 !LL.z	 !&)3r:   c                .    t        | j                         y rL   )r   r4   )r5   s    r9   on_shutdownzBlogPlugin.on_shutdown  s    t}}r:   c                j   | j                   j                  ryt        |j                   j                  t              sZ| j                   j                  rD|j                   j
                  j                  t        j                  t        j                        kD  S t        |j                   j                        S r/   )rA   rF   r   booldraft_if_future_daterN   rO   r   nowr   utc)r5   rP   s     r9   _is_excludedzBlogPlugin._is_excluded  st    ;; $++++T2{{//{{''//(,,x||2LLL DKK%%&&r:   c                6   t         j                  j                  | j                  j                  d      }t         j                  j                  |      }t         j                  j                  |j                        }t         j                  j                  ||      }t         j                  j                  |      sA| j                  ||d      }|j                  |       | j                  |j                  d       |j                  |      }t        d ||      S )Nzindex.mdFtempz# Blog

)r_   r`   ra   rA   rV   rU   r   r   isfile_path_to_filerw   _save_to_filer   get_file_from_pathr*   )r5   r{   rA   r`   r   r   ry   s          r9   re   zBlogPlugin._resolve  s    ww||DKK00*=ww% wwv/ww||D$'ww~~d#%%dF5%ADLL t00,? ''-D$''r:   c                   t        ||      }| j                  ||      }| j                  ||d      }|j                  |_        |j                  |_        |j
                  |_        |j                  |j                         |S )NFr   )r)   _format_path_for_postr   r]   rc   rd   _set_canonical_urlsite_url)r5   ry   rA   rP   r`   r   s         r9   _resolve_postzBlogPlugin._resolve_post  sx    D&! ))$7!!$u!= "]]!//!XX 	0r:   c              #    K   | j                   j                  j                  | j                   j                        }t        j
                  j                  |      }t        j
                  j                  |j                        }t        j
                  j                  ||      }t        j
                  j                  |      st	        j                  |d       |j                         D ][  }|j                  j                  |      st        j                   |_        | j%                  ||      }| j'                  |      rX| ] y w)NrI   Texist_ok)rA   rX   rY   rV   r_   r`   rU   r   r   ra   isdirmakedirsdocumentation_pagessrc_pathr\   r   EXCLUDEDrz   r   r   )r5   r{   rA   r`   r   r   ry   rP   s           r9   rg   zBlogPlugin._resolve_posts  s     {{##**$++2F2F*Gww% wwv/ww||D$'ww}}T"KK. --/ 	D==++D1 ,44DN %%dF3D$$T*
	s   E E
E
c           
        | j                   j                  j                  | j                   j                        }t        j
                  j                  |      }t        j
                  j                  |j                        }t        j
                  j                  ||      }t               }t        j
                  j                  |      s|j                  S t        |d      5 }t        j
                  j                  |      |_        	 |j!                  t#        j$                  |t&              xs i        	 d d d        |j-                         \  }}|D ]  \  }	}
t.        j1                  |
        |D ]  \  }	}t+        d| d| d|        |j                  S # t(        $ r}t+        d| d| d|       d }~ww xY w# 1 sw Y   xY w)NrI   z	utf-8-sigencodingzError reading authors file 'r   z':
)rA   authors_filerY   rV   r_   r`   rU   r   r   ra   r"   r   rC   openabspathconfig_file_path	load_dictyamlloadr   	Exceptionr   validatelogwarning)r5   rA   r`   r   ry   feerrorswarningsr   ws              r9   rD   zBlogPlugin._resolve_authors  s   {{''..dkk6J6J.Kww% wwv/ww||D$' ")ww~~d#>>! $;/ 	1&(ggood&;F#	  1j!9!?R@	 "??, 	DAqKKN	 	DAq.tfF4&# 	 ~~#  !24&tfDc 	 	s*   %%G-F	F>%F99F>>GG
c              #     K   | |j                   D ].  }| j                  |      D ]  }t        |t              sJ |  0 y wrL   )rk   rs   r   r*   )r5   r~   r   nexts       r9   rs   zBlogPlugin._resolve_views	  sO     
 JJ 	D++D1 !$---
	s   AAc                z    t        |j                  t              r|j                  j                  S |j                  S rL   )r   r   r   childrenitems)r5   itemr   s      r9   _resolve_siblingszBlogPlugin._resolve_siblings  s*    dkk7+;;'''99r:   c                \    t        |t              r|j                  r|j                  d   S |S Nr   )r   r*   rv   )r5   r   s     r9   r   zBlogPlugin._resolve_original  s%    dD!djj::a= Kr:   c              #  v  K   | j                   j                  D ]  }|j                  j                  j                  }| j                  ||      }| j                  ||      }|j                  |      }|sB| j                  ||      }|j                  |       | j                  |j                  d|        t        j                  |_        t        |j                   t"              st#        |||       t        |j                   t"              sJ |j                   j                  j                  |        y wNr   )rJ   rh   rA   rN   rO   _format_date_for_archive_format_path_for_archiver   r   rw   r   r   r   r   rz   r   r   r%   )r5   rA   r{   rP   rN   r   r`   ry   s           r9   rj   zBlogPlugin._generate_archive$  s    IIOO 	)D;;##++D 00v>D00v>D ++D1D))$7T" ""4#4#44&kB ,44DN dii1dD&11 dii111IIOO""4(3	)s   D7D9c              #    K   | j                   j                  D ]  }|j                  j                  D ]  }| j	                  |      }| j                  j
                  xs |g}||vrrt        j                  j                  |j                        }t        j                  j                  |j                  j                  |      }t        d| d| d| d      |j                  |      }|sB| j                  ||      }|j                  |       | j!                  |j                  d|        t"        j$                  |_        t)        |j*                  t,              st-        |||       t)        |j*                  t,              sJ |j*                  j                  j                  |       |j                  j                  |j*                           y w)Nz"Error reading categories of post 'r   z': category 'z' not in allow listr   )rJ   rh   rA   rm   _format_path_for_categorycategories_allowedr_   r`   r   r   ry   r   r   r   r   rw   r   r   r   rz   r   r   r&   )	r5   rA   r{   rP   r   r`   rm   r   ry   s	            r9   rn   zBlogPlugin._generate_categoriesB  s    IIOO !	2D..  255d; "[[;;Ev
z)77??6??;D77??499+A+A4HD%<TF C 6tf4GI  //5--dF;DLL& &&t'8'8Btf+F "0!8!8 "$))X6"4v66 "$))X666		&&t,&&tyy1A 2!	2s   GGc              #    K   | j                   j                  D ]F  }|j                  j                  D ])  }| j                  |   }| j	                  ||      }|j                  |      }|sL| j                  ||      }|j                  |       | j                  |j                  d|j                          t        j                  |_        |j                  s|j                  |_        t        |j                   t"              st#        |j                  ||       t        |j                   t"              sJ |j                   j                  j                  |       , I y wr  )rJ   rh   rA   rC   _format_path_for_profiler   r   rw   r   r   r   r   r   rz   rd   r   r   r'   )r5   rA   r{   rP   r   authorr`   ry   s           r9   rr   zBlogPlugin._generate_profilesh  s    IIOO 	-Dkk)) -b)44R@ //5--dF;DLL& &&t'8'8Bv{{m:LM "0!8!8zz!%FJ "$))W5!&++tV<< "$))W555		&&t,3-	-s   E"E$c              #    K   | | j                  |      }t        |t        |j                        |      D ]  }| j	                  |d||z  z         }|j                  |      }|sM| j                  ||      }|j                  |       t        |j                  j                  |j                         t        j                  |_        t        |j                  t               s|j#                  d ||       t        |j                  t               sJ |j$                  |j                  _        |j                  |j                  _         y wNr   )_config_pagination_per_pager   r   rh   _format_path_for_paginationr   r   rw   r   ry   r   r   r   rz   r   r   r*   r8   rv   )r5   r~   rA   r{   stepr   r`   ry   s           r9   ru   zBlogPlugin._generate_pages  s    
 //5c$**ot4 	)B33D!bDj.ID ++D1D))$7T" $))00$2C2CD ,44DN dii.nnT488 dii..."jjDIIO"jjDIIO-	)s   EEc                    |j                   j                  sy t        j                  j	                  |j
                        }t        j                  j	                  |j                  j                  |      }t        |j                   j                  j                        D ]  }t        |j                        }|j                  r&|j                  |j                        }|s*t        j                  d| d| d|j                   d       mt!        |j"                  t$              s|j                  |_        t&        |_        t!        |t&              sJ |j*                  xs |j"                  j*                  |_        |j"                  j                  |_        t-        |j"                  j.                        |_        |j0                  s,| j2                  r:t5        |j"                  j6                  |j0                        }	|	sMt        j                  d| d| d|j0                   d|j                   d	       |j9                         |_        |xj                  d|	j:                   z  c_        |	j*                  |j.                  d<    y )Nz Error reading metadata of post 'r   z ':
Couldn't find file for link 'r   z':
Couldn't find anchor '#subtitle)rA   linksr_   r`   r   r   ry   r   _find_linksr   r   rd   schemer   r   r   r   r   r   r+   r8   r   r   metafragmentr3   _find_anchortocgeturlr   )
r5   rP   rA   r{   r   r`   linkrd   ry   anchors
             r9   r   zBlogPlugin._generate_links  s   {{   wwv/wwtyy55t<   1 1 7 78 ;	1D488$Czz ++CHH5D6tfF4& I447HH:Q@  dii.88 'DNdI... 6tyyDJDHdiinn-DI << }} "$))-->F6tfF4& I--0\\N&
!M ::< HH!FII;'H$*LLDIIj!w;	1r:   c                    t        ||dd  |dd        D ]P  \  }}}||_        ||_        ||_        t	        |t
              s-| j                  |      }|r||_        |sJ||_        R y )Nr      )zipr   previous_page	next_pager   r*   r   )r5   r   rv   tailr   headr~   s          r9   r   zBlogPlugin._attach  st     #E59eABi @ 	3D$ "(DK!%D!%DN $%--d3dd+	3r:   c                V    | j                  ||j                  ||j                  g       y rL   )r   r"  r#  )r5   r   hostr   s       r9   r   zBlogPlugin._attach_at  s!    Vd00$GHr:   c                F   |j                   |_         | j                  ||      }|j                  |       t        d t	        |      D              }|j
                  }|j                  j                  |j                         | j                  ||g|j                  |       y )Nc              3  B   K   | ]  }t        |t              s|  y wrL   )r   r   ).0r   s     r9   	<genexpr>z(BlogPlugin._attach_to.<locals>.<genexpr>  s     OT
48NDOs   )
r   r   rw   r   r   r#  rv   rl   r   r   )r5   r~   sectionr   r   r$  r%  s          r9   r   zBlogPlugin._attach_to  s     &&tS1W OXe_OO~~ 			))*Wt=g&6&6==>r:   c                t   |j                   d }}| j                  |      r\|j                  j                  |      }| j	                  |      }||z  ||z  |z   }}|j                   || }| j                  |||f      }|D cg c]*  }|j                  r| j                  |j                  |      , }}||fS c c}w rL   )rh   rt   rv   indexr  _render_paginationr   _render_post)	r5   r~   rh   r   r   r  pqrP   s	            r9   r   zBlogPlugin._render  s     JJz ""4(!!$'B 33D9D9b4i$.qA JJqOE001v>J
 "
T\\ dllD1
 
 j  
s    /B5c                b   |j                  || j                  j                         | j                  |      }|ru|j                  j
                  r_|j                  j
                  rI|j                  j
                  d   j                  j                  |j                  j
                  d          |S r  )renderrA   r   _config_tocr  r   r   rw   )r5   r   r~   r  s       r9   r0  zBlogPlugin._render_post7  s|    tT[[??@ t$7;;$$HHNN1&&--gkk.?.?.BC r:   c                ^    |\  }}dfd}t        j                  |||z
  z  ||z
  |      S )Nc                d    t        j                  | dz
     j                  j                        S r  )r   rv   rd   )nr~   s    r9   	url_makerz0BlogPlugin._render_pagination.<locals>.url_makerH  s'    #DJJq1u$5$9$9488DDr:   )r   items_per_pager9  )r8  int)
Paginationrh   )r5   r~   r   r1  r2  r9  s    `    r9   r/  zBlogPlugin._render_paginationD  s<    1	E JJqQU|U!
 	
r:   c                B    | j                   |   |S | j                   |   S rL   )rA   )r5   rR   defaults      r9   _configzBlogPlugin._configU  s$    ++c*2wHC8HHr:   c                    | j                   j                  }t        |t              r| j	                  d|      S t        |t
              r| j	                  d|      S t        |t              r| j	                  d|      S |S )Narchive_toccategories_tocauthors_profiles_toc)rA   blog_tocr   r%   r?  r&   r'   r5   r~   r>  s      r9   r5  zBlogPlugin._config_tocY  si    ++&&dG$<<w77dH%<< 0'::dG$<< 6@@Nr:   c                    | j                   j                  }t        |t              r| j	                  d|      S t        |t
              r| j	                  d|      S t        |t              r| j	                  d|      S |S )Narchive_paginationcategories_paginationauthors_profiles_pagination)rA   r   r   r%   r?  r&   r'   rE  s      r9   rt   zBlogPlugin._config_paginatione  sj    ++((dG$<< 4g>>dH%<< 7AAdG$<< =wGGNr:   c                    | j                   j                  }t        |t              r| j	                  d|      S t        |t
              r| j	                  d|      S t        |t              r| j	                  d|      S |S )Narchive_pagination_per_pagecategories_pagination_per_page$authors_profiles_pagination_per_page)rA   pagination_per_pager   r%   r?  r&   r'   rE  s      r9   r  z&BlogPlugin._config_pagination_per_pageq  sj    ++11dG$<< =wGGdH%<< @'JJdG$<< FPPNr:   c                   |j                   j                  d | j                   j                   }|D cg c]  }| j                  |       }}|j                   j                  j
                  }| j                   j                  j                  dj                  |      | j                  ||      |j                  j                  |j                   j                  xs | j                  |            }t        j                  |j!                  d            }t        j                  | j                   j"                  | d      S c c}w )N/)rm   rN   ry   slug.md)rA   rm   post_url_max_categories_slugify_categoryrN   rO   post_url_formatrY   ra   _format_date_for_post_urlry   r   rQ  _slugify_postrT   rU   striprV   )r5   rP   rA   rm   r   rN   r`   s          r9   r   z BlogPlugin._format_path_for_post  s    [[++,PT[[-P-PQ
?IJtd,,T2J
J {{''{{**11*-11$?99>>;;##?t'9'9$'?	 2 
 !!$**S/2~~dkk22tfCLAA Ks   E c                P   |j                   j                  j                  }| j                   j                  j	                  | j                  ||            }t        j                  |j                  d            }t        j                  | j                   j                  | d      S )N)rN   rP  rR  )rA   rN   rO   archive_url_formatrY   _format_date_for_archive_urlrT   rU   rX  ra   rV   )r5   rP   rA   rN   r`   s        r9   r  z#BlogPlugin._format_path_for_archive  s    {{''{{--4444T6B 5 

 !!$**S/2~~dkk22tfCLAAr:   c                   | j                   j                  j                  | j                  |            }t	        j
                  |j                  d            }t	        j                  | j                   j                  | d      S )N)rQ  rP  rR  )	rA   categories_url_formatrY   rT  rT   rU   rX  ra   rV   )r5   r   r`   s      r9   r  z$BlogPlugin._format_path_for_category  sj    {{0077))$/ 8 

 !!$**S/2~~dkk22tfCLAAr:   c                "   | j                   j                  j                  |j                  xs ||j                        }t        j                  |j                  d            }t        j                  | j                   j                  | d      S )N)rQ  r   rP  rR  )
rA   authors_profiles_url_formatrY   rQ  r   rT   rU   rX  ra   rV   )r5   r   r  r`   s       r9   r  z#BlogPlugin._format_path_for_profile  so    {{66==;;$";; > 
 !!$**S/2~~dkk22tfCLAAr:   c                   | j                   j                  j                  |      }t        j                  |j
                  j                        \  }}|j                  r+t        j                  |      }t        j                  |d      }t        j                  |j                  d            }t        j                  || d      S )N)r   r.  rP  rR  )rA   pagination_url_formatrY   rT   splitextry   r[   is_indexdirnamera   rU   rX  )r5   r~   r   r`   baser   s         r9   r  z&BlogPlugin._format_path_for_pagination  s    {{0077 8 
 $$TYY%6%67a==$$T*D>>$0D !!$**S/2~~dtfCL11r:   c                    |j                   d   j                  dd      }|dv rt        |||      S t        |||      S )Nlanguage-r   )fulllongmediumshort)rY   locale)themer^   r   r   )r5   rN   rY   rA   rm  s        r9   _format_datezBlogPlugin._format_date  sD    ll:.66sC@88tfvFF"4&6JJr:   c                T    | j                   j                  }| j                  |||      S rL   )rA   post_date_formatro  r5   rN   rA   rY   s       r9   r   z BlogPlugin._format_date_for_post  s&    --  vv66r:   c                T    | j                   j                  }| j                  |||      S rL   )rA   post_url_date_formatro  rr  s       r9   rV  z$BlogPlugin._format_date_for_post_url  s&    11  vv66r:   c                T    | j                   j                  }| j                  |||      S rL   )rA   archive_date_formatro  rr  s       r9   r  z#BlogPlugin._format_date_for_archive  s&    00  vv66r:   c                T    | j                   j                  }| j                  |||      S rL   )rA   archive_url_date_formatro  rr  s       r9   r[  z'BlogPlugin._format_date_for_archive_url  s&    44  vv66r:   c                z    | j                   j                  }| j                   j                  |j                  |      S rL   )rA   post_slugify_separatorpost_slugifyr   )r5   rP   r   s      r9   rW  zBlogPlugin._slugify_post  s,    KK66	{{''

I>>r:   c                f    | j                   j                  }| j                   j                  ||      S rL   )rA   categories_slugify_separatorcategories_slugify)r5   r   r   s      r9   rT  zBlogPlugin._slugify_category  s(    KK<<	{{--dI>>r:   r   c                   |j                  d      sJ t        ||s|j                  n| j                  |j                  |j
                        }|rd|_        |S )NrR  zmaterial/blog)endswithr   r   r4   rW   use_directory_urlsgenerated_by)r5   r`   rA   r   ry   s        r9   r   zBlogPlugin._path_to_file  sT    }}U####'FOOT]]OO%%	
  /D r:   c                    t        j                  t         j                  j                  |      d       t	        |dd      5 }|j                  |       d d d        y # 1 sw Y   y xY w)NTr   r   zutf-8r   )r_   r   r`   rd  r   write)r5   r`   contentr   s       r9   r   zBlogPlugin._save_to_file  sL    
BGGOOD)d;$0 	AGGG	 	 	s   AA'c                    |j                   j                         }|j                  dd|i      }|j                  j	                  |      S )Nzpartials/language.htmlrA   )globals)rn  get_envget_templatemodulet)r5   rR   rA   r   templates        r9   r   zBlogPlugin._translate  sJ    ll""$##$(F0D $ 

   %%r:   )rP   r)   )r{   r   rA   r   )ry   r   rA   r   )rA   r   )r~   r*   )r   r   r   r   )r   r   )rA   r   r{   r   )r~   r*   rA   r   r{   r   )rP   r)   rA   r   r{   r   )r   r   rv   z
list[Page])r   r   r'  r   r   r   )r~   r*   r,  r   r   r   )r   r(   r~   r*   )r~   r*   r   ztuple[int, int])rR   strr>  any)rP   r)   rA   r   )r   r  )r   r  r  r!   )r~   r*   r   r;  )rN   r   rY   r  rA   r   )rN   r   rA   r   )r`   r  rA   r   )r`   r  r  r  )rR   r  rA   r   returnr  )6__name__
__module____qualname__supports_multiple_instancesr1   r?   rG   r   r   r   r   r   r   r   r   r   re   r   rg   rD   rs   r   r   rj   rn   rr   ru   r   r   r   r   r   r0  r/  r?  r5  rt   r  r   r  r  r  r  ro  r   rV  r  r[  rW  rT  r   r   r   __classcell__)r8   s   @r9   r-   r-   ?   sg   "&"
%0 CB; B;P C8G 8G| C:C :CzH "9P D> >4'&(*$8&R)<"2L->)@E1V3"I
?,!2

"I			B$BBB20K7
7
7
7?
? HL (&r:   r-   c              #     K   | D ]W  }t        |t              r| t        |t              s(t        |j                        D ]  }t        |t              sJ |  Y y wrL   )r   r   r   r  r   )r   r   s     r9   r  r    s_      
 dD!J dG$#DMM2 !$---

s
   *A 3A c                    | D ]?  }|j                   |k(  r|c S t        |j                  |      }t        |t              s=|c S  y rL   )r   r  r   r   r   )r  r   r  s      r9   r  r  ,  sB     99?M foor2fj)Mr:   zmkdocs.material.blog)r   zlist[StructureItem])r  r   r   r  )G
__future__r   loggingr_   rT   r   babel.datesr   r   r   r   r   jinja2r	   jinja2.runtimer
   mkdocs.config.defaultsr   mkdocs.exceptionsr   mkdocs.pluginsr   r   mkdocs.structurer   mkdocs.structure.filesr   r   r   mkdocs.structure.navr   r   r   mkdocs.structure.pagesr   mkdocs.structure.tocr   r   mkdocs.utilsr   r   paginater<  shutilr   tempfiler   urllib.parser   r    r    r  r!   r"   rA   r#   r$   	structurer%   r&   r'   r(   r)   r*   r+   r-   r  r  	getLoggerr   r   r:   r9   <module>r     s   * #  	   4  '  " / ) 5 * > > : : ' < 4 '   !   #    X&J' X&~ g./r:   