
    Mf*                        d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlm	Z	 ej                  d   j                  d e	eej                  e      f       	 d dlmZ ej"                  Zd Zee_        d d	l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#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z*  G d de      Z+ G d d      Z, e,d       e,d       e,d       e,d       e,d      dZ-d Z. G d de      Z/ G d d e!      Z0 G d! d"e&      Z1 G d# d$e#      Z2d% Z3y# e$ r	 d dlmZ Y w xY w# e$ r d dlmZmZ Y w xY w)&    N)
CMakeLexer)NameOperator)bygroupsargsz(\$<)(.+?)(>))QtHelpBuilderc                    t        | |||      }g }|D ]u  }|j                  dd      \  }}|j                  d      \  }	}
d|	v r5d|	v r1|j                  |dz   t        j                  |	      z   dz   |
z          e|j                  |       w |S )Nzref="   "<>)old_build_keywordssplitappendhtmlescape)selftitlerefssubitems	old_items	new_itemsitembeforerestrefafters              7/opt/kde/src/extra-cmake-modules/docs/sphinx/ext/ecm.pynew_build_keywordsr      s     udH=))d::h*LFDD!JCs
sczv(4;;s+;;dBUJKt  
    )	Directive
directives)	Transform)
SafeStringErrorString)ionodes)ObjectDescription)DomainObjType)XRefRole)make_refnode)addnodesc                   @    e Zd ZdZdZdZdej                  iZd Z	d Z
y)	ECMModuler
   r   Tencodingc                 j    t        j                  d      | _        t        j                  | g|i | y )Nz^#\[(?P<eq>=*)\[\.rst:$)recompilere_startr!   __init__)r   r   keyss      r   r5   zECMModule.__init__@   s+    

#=>4/$/$/r    c           	      ^   | j                   j                  j                  }|j                  s| j	                  d| j
                  z        | j                   j                  j                  j                  }|j                  | j                  d         \  }}t        j                  j                  |      }| j                  j                  d|j                        }|j                  }	 |j                   j#                  |       t%        j&                  |||      }|j3                         j5                         }	|j7                          d }
g }|	D ]  }|
.|
d
k7  r)|j9                  |
      }|dk\  rr|d   d
k(  rd}n|d| }d }
n_| j:                  j=                  |      }|rd|j?                  d      z  }
d}n+|dk(  rd
}
d}n!|
d
k(  r|d
k(  s|d d dk(  r|dd  }n	d }
d}n|
d}|jA                  |        |
,|
d
k7  r'| j	                  d| j
                  d|
dd d|      | jB                  jE                  ||       g S # t(        $ r, | j+                  d| j
                  dt-        |      d      t.        $ r0}| j+                  d| j
                  dt1        |      d	      d }~ww xY w)Nz"%s" directive disabled.r   r0   )source_pathr0   error_handlerzProblems with "z1" directive path:
Cannot encode input file path "z" (wrong locale?).z" directive path:
.# z]%s]eqz#.rst:   z# r   z" found unclosed bracket "#[r
   z[.rst:" in )#statedocumentsettingsfile_insertion_enabledwarningnameenv
relfn2path	argumentsospathnormpathoptionsgetinput_encodinginput_encoding_error_handlerrecord_dependenciesaddr&   	FileInputUnicodeEncodeErrorseverer$   IOErrorr%   read
splitlinesclosefindr4   matchgroupr   state_machineinsert_input)r   rB   rF   rel_pathrJ   r0   	e_handlerferror	raw_linesrstlineslineposms                  r   runzECMModule.runD   s   ::&&//..,,9DIIEFFjj!!**..q(9:$ww%<<##J0G0GH99		7((,,T2+46A FFH'')			D3#:iin!8Aw#~!#Ac{C MM''- 1774=0CDX%CDCZs{d2Ah$&6#ABx"![DLL7 8 ?scz,, $		3q9d < = =''t4	Y " 	=++  $yy*T*:< = =  	7++yy+e"46 7 7	7s   (3I   <J,<+J''J,N)__name__
__module____qualname__required_argumentsoptional_argumentsfinal_argument_whitespacer"   r0   option_specr5   rh    r    r   r/   r/   :   s.     $z223K0:r    r/   c                       e Zd Zd Zd Zy)_ecm_index_entryc                     || _         y Ndesc)r   rv   s     r   r5   z_ecm_index_entry.__init__   s	    	r    c                 .    d| j                   d||dd fS )Npairz ; mainru   )r   r   targetids      r   __call__z_ecm_index_entry.__call__   s    dii764PPr    N)ri   rj   rk   r5   r{   rp   r    r   rr   rr      s    Qr    rr   manualmodulefind-module
kde-module	toolchain)r|   r}   r~   r   r   c           	          | j                   d   d   }||v r9|j                  j                  d|d| j                  ||   d         d|       | j                  |f||<   y )NecmobjectszECM object "z" also described in "r   z".)re   )
domaindatareporterrD   doc2pathdocname)rF   rA   re   objtyperz   invs         r   _ecm_object_inventoryr      si    
..
	
*C3!!s||CM!$457=A 	" 	C [['*CMr    c                   "    e Zd ZdZd Zd Zd Zy)ECMTransform   c                 @    t        j                  | ||       i | _        y rt   )r#   r5   titles)r   rA   	startnodes      r   r5   zECMTransform.__init__   s    495r    c                    | j                   j                  j                  }| j                  j	                  |      }|t
        j                  j                  |j                  |dz         }	 t        |d      }|D ]>  }t        |      dkD  s|d   j                         s	|d   dk(  s.|j                         } n |j                          | t
        j                  j                  |      }	 || j                  |<   |S # t        $ r d}Y w xY w)zParse a document title as the first line starting in [A-Za-z0-9<]
           or fall back to the document basename if no such line exists.
           Return the title or False if the document file does not exist.
        z.rstrr   r   F)rA   rB   rF   r   rM   rI   rJ   joinsrcdiropenlenisalnumrstriprX   basenamerU   )r   r   rF   r   fnamer`   re   s          r   parse_titlezECMTransform.parse_title   s    
 mm$$(((=GGLLWV^<E6$ D4y1}$q'//*;tAw#~ $  	=GG,,W5E#(DKK   s   ,C> >DDc                    | j                   j                  j                  }|j                  j	                  d      \  }}}t
        j                  |      }|r| j                  |j                        }|d|}t        j                  dd|g      }| j                   j                  d|       t        j                         }	 |||      g|	d<   | j                   j                  d|	       t        || j                   d||       y y )N/:r<   )idsr   entriesr
   )rA   rB   rF   r   
rpartition_ecm_index_objsrM   r   r'   targetinsertr-   indexr   )
r   rF   r   septailmake_index_entryr   rz   
targetnode	indexnodes
             r   applyzECMTransform.apply   s    mm$$(( ![[33C8d*..w7$$S[[1E")51Hb"8*=JMM  J/ (I$4UH$E#FIi MM  I.!#t}}a(K r    N)ri   rj   rk   default_priorityr5   r   r   rp   r    r   r   r      s     0Lr    r   c                       e Zd Zd Zd Zy)	ECMObjectc                 8    |t        j                  ||      z  }|S rt   )r-   	desc_name)r   sigsignodes      r   handle_signaturezECMObject.handle_signature   s    8%%c3//
r    c                 4   | j                   d|}|| j                  j                  j                  vr|d   j	                  |       |d   j	                  |       | j
                   |d<   | j                  j                  j                  |       t        | j                  | j                  j                  | j                  | j                   |       t        j                  | j                         }|r&| j                  d   j	                   |||             y y )Nr   namesr   firstr   )r   r@   rA   r   r   r   note_explicit_targetr   rF   linenor   rM   r   )r   rE   r   r   rz   r   s         r   add_target_and_indexzECMObject.add_target_and_index   s    "llD14::..222G##H-EN!!(+$(JJGGJJ44W=!$((DJJ,?,?$(KKxI +..t||<NN9%,,-=dH-MN r    N)ri   rj   rk   r   r   rp   r    r   r   r      s    
Or    r   c                       e Zd Z ej                  dej
                        Z ej                  dej
                        Zd Zy)ECMXRefRolez^(.+?)(\s*)(?<!\x00)<(.*?)>$z^([^()\s]+)\s*\(([^()]*)\)$c                 
   	 t         j                  j                  |      }|rDt        |j	                  d            dk(  r'|j	                  d      d|j	                  d      d}nngt        j                  | |||g|i |S )Nr>   r   r
   z <   r   )r   _rerZ   r   r[   r+   r{   )r   typrawtexttextr   r6   rg   s          r   r{   zECMXRefRole.__call__   sv     %%d+AS_)'(wwqz1771:>    sGTIDIDIIr    N)	ri   rj   rk   r2   r3   DOTALLr   _re_subr{   rp   r    r   r   r      s8     "**4bii
@Cbjj7CG	Jr    r   c                       e Zd ZdZdZdZ edd       edd       edd       edd       edd      d	Zi Z e	        e	        e	        e	        e	       d	Z
d
i iZd Zd Zd Zy)	ECMDomainzECM domain.r   ECMr}   r   r~   r|   r   )r}   r   r~   r|   r   r   c                     g }| j                   d   j                         D ]  \  }\  }}||k(  s|j                  |       ! |D ]  }| j                   d   |=  y )Nr   )dataitemsr   )r   r   to_clearfullnamefn_s         r   	clear_doczECMDomain.clear_doc	  s\    !%9!5!;!;!=Hgr1W}) "> !H		)$X. !r    c                 x    |d|}| j                   d   j                  |      }	|	y t        |||	d   |||      S )Nr   r   r   )r   rM   r,   )
r   rF   fromdocnamebuilderr   r   nodecontnoderz   objs
             r   resolve_xrefzECMDomain.resolve_xref  sK    !6*ii	"&&x0;G[#a&($f. 	.r    c              #   p   K   | j                   d   j                         D ]  \  }\  }}|||||df  y w)Nr   r
   )r   r   )r   refnamer   types       r   get_objectszECMDomain.get_objects  s?     (,		)(<(B(B(D$G_gtGT7GQ?? )Es   46N)ri   rj   rk   __doc__rE   labelr*   object_typesr"   r+   rolesinitial_datar   r   r   rp   r    r   r   r      s    DExh7|l;}m<xh7{k:L JzzzzzE 	2L/.@r    r   c                     | j                  dt               | j                  t               | j	                  t
               y )Nz
ecm-module)add_directiver/   add_transformr   
add_domainr   )apps    r   setupr     s,    lI.l#NN9r    )4r   rI   r2   pygments.lexersr   pygments.tokenr   r   pygments.lexerr   tokensr   Variablesphinxcontrib.qthelpr   ImportErrorsphinx.builders.qthelpbuild_keywordsr   r   docutils.parsers.rstr!   r"   docutils.transformsr#   docutils.utils.error_reportingr$   r%   docutils.error_reportingdocutilsr&   r'   sphinx.directivesr(   sphinx.domainsr)   r*   sphinx.rolesr+   sphinx.util.nodesr,   sphinxr-   r/   rr   r   r   r   r   r   r   r   rp   r    r   <module>r      sT    	 	
 ' ) # 
  &     "2"*8T]]H"M"O P
30 #11 
  2  6 )AF
  / * ! * D	 DLQ Q $H-#H-#M2#L1#K0+3L9 3LjO! O*J( J"+@ +@ZM  323*  A@@As$   D ?D. D+*D+.D>=D>