
                         v    S r SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSKJr   " S S	\R                  5      r
g)
z*Cloud SDK markdown document HTML renderer.    )absolute_import)division)unicode_literalsN)devsite_scripts)html_rendererc                   \   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 rS
 rS rSrU =r$ )DevSiteRenderer   zRenders markdown to DevSiteHTML.

Devsite-Specific Attributes:
_opentag: True if <code> tag on Example command is not closed, False otherwise
c                 J   > [         [        U ]
  " U0 UD6  SU l        SU l        g )NF )superr	   __init___opentag_whole_example)selfargskwargs	__class__s      >lib/googlecloudsdk/core/document_renderers/devsite_renderer.pyr   DevSiteRenderer.__init__#   s&    	/4)4:6:DMD    c                    U R                   R                  S5        U R                   R                  S5        U R                  (       a+  U R                   R                  SU R                  -   S-   5        U R                   R                  S5        [        R                   H-  u  pU R                   R                  SR                  XS95        M/     g)	zRenders an HTML document title.z<html devsite="">
z<head>
z<title>z	</title>
z<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="project_path" value="/sdk/docs/_project.yaml">
<meta name="book_path" value="/sdk/_book.yaml">
z<!-- {comment} -->
{script}
)commentscriptN)_outwrite_titler   SCRIPTSformat)r   r   r   s      r   _TitleDevSiteRenderer._Title(   s    IIOO)*IIOOJ{{
iiooi$++-<=IIOO	< +22
iioo
*
1
1 2  3r   c                     SU l         US:X  a0  U R                  R                  S5        U =R                   S-  sl         U R                  R                  SR                  U R	                  U5      US95        g)zrRenders a DevSite heading.

Args:
  unused_level: The heading level counting from 1.
  heading: The heading text.
z</dd>
</section>
INFORMATIONz{% dynamic if request.is_tpc %}z{% dynamic endif %}zJ
<section id="{document_id}">
<dt>{heading}</dt>
<dd class="sectionbody">
)document_idheadingN)_headingr   r   r   GetDocumentID)r   unused_levelr%   s      r   _HeadingDevSiteRenderer._Heading;   sh     *DM-
iioo78
mm,,mIIOO	99?**73W :@ :
r   c                 p   U R                   (       a)  U R                  b  U R                  R                  S5        gSU l        U R
                  (       ad  SU l        U R                   (       a"  SU l         U R                  R                  S5        SU l        U R                  R                  S5        SU l        gg)z/Flushes the current collection of Fill() lines.N
Fz</pre>
r   )_example_langr   r   
_paragraph_fill_section_blankr   s    r   _FlushDevSiteRenderer._FlushP   s{    }}/
iioodDOzzdm			
#dj
iiooddk r   c                 d   [         R                  " X R                  5       Vs/ s H  oDR                  5       PM     nnSnSnU HR  u  pX`R                  Xx -  nUSU-   S-   SR	                  U5      -   S-   -  nX`R                  X -  nUSU-   S-   -  nU	nMT     X`R                  US	 -  nU$ s  snf )
z9Wraps all regex matches from example in tag with classes.r   r   <z class=" z">z</>N)refinditerr   spanjoin)
r   tagmatch_regexcss_classesmmatcheswrapped_exampleleft
match_leftmatch_rights
             r   	WrapFlagsDevSiteRenderer.WrapFlags_   s    !#[:M:M!NO!NAvvx!NGOOD#*
,,T==osZ/#((;2GG$NNo,,ZDDoc))od $+ **4511O Ps   B-c                     U R                   R                  S5        U R                   R                  U R                  SSS/5      5        U R                   R                  S5        SU l        g)z>Prints full example string with devsite tags to output stream.z<code class="devsite-terminal">r<   z-(-\w+)+flagz</code>
r   N)r   r   rG   r   r3   s    r   FlushExampleDevSiteRenderer.FlushExamplen   sJ    IIOO56IIOODNN6;ABIIOOK Dr   c                    SU l         [        U5      [        UR                  5       5      -
  nUR                  5       n[        R                  " S5      n[        UR                  U5      5      nU R                  (       d\  SU l        SU l        SU l	        U R                  =(       d    SnU R                  R                  SR                  UU(       a  SOSS	95        U(       a  SU l        U R                  (       an  UR                  SU5      nUR                  S
5      (       a  U =R                   USS -  sl        gU =R                   U-  sl        U R#                  5         SU l        gU R                  R                  SU-  U-   S-   5        g)zGDisplays line as an indented example.

Args:
  line: The example line.
Tz\A\$\s+F   shz1<pre class="prettyprint lang-{lang}{wrap_code}">
z
 wrap-coder   )lang	wrap_code\Nr8   r,   )r2   lenlstripr:   compileboolmatchr-   _in_command_blockr0   r.   r   r   r   subendswithr   rK   )r   lineindentcommand_patternis_start_of_command_examplerP   s         r   ExampleDevSiteRenderer.Exampleu   s?    DKYT[[]++F;;=Djj,O"&'<'<T'B"C==dm$d djZZ4d
iioo
>
E
E(C F  ##d  T*d	t		tCRy(t#!&
iioocFlT)D01r   c           	         XR                   S   :w  aV  SU;  d8  SU;   d2  SU;   d,  UR                  S5      (       d  UR                  S5      (       a  SR                  X=(       d    US9$ UR	                  S5      nUS	   S
:X  a  UR                  5         [        U5      S:  a  US   S:X  a  US-   $ SR                  US   SR                  S/USS -   5      U=(       d    US9$ )zRenders an anchor.

Args:
  target: The link target URL.
  text: The text to be displayed instead of the link.

Returns:
  The rendered link anchor and text.
r   /:#zwww.z/..z<a href="{target}">{text}</a>)targettextrS   help   metaz --helpz'<a href="/sdk/{head}/{tail}">{text}</a>	referenceN)headtailrg   )command
startswithr[   r   splitpoprT   r=   )r   rf   rg   target_partss       r   LinkDevSiteRenderer.Link   s     a 6&=&=V$$??5!!,33nf 4  
 <<$LB6!
<1aF!:i4;;!_XX{ml12&667^V <  r   c                 j    [         R                  " SSR                  U R                  S   5      U5      $ )zvAdd global flags links to line if any.

Args:
  line: The text line.

Returns:
  line with annoted global flag links.
z(--[-a-z]+)z3<code><a href="/sdk/{}/reference/#\1">\1</a></code>r   )r:   rZ   r   rn   )r   r\   s     r   LinkGlobalFlagsDevSiteRenderer.LinkGlobalFlags   s6     66>EELLO	
 	 r   )	r2   r-   r0   r&   rY   r   r/   r1   r   )__name__
__module____qualname____firstlineno____doc__r   r    r)   r4   rG   rK   r`   rs   rv   __static_attributes____classcell__)r   s   @r   r	   r	      s<    
&*'2RB r   r	   )r|   
__future__r   r   r   r:   &googlecloudsdk.core.document_renderersr   r   HTMLRendererr	    r   r   <module>r      s0     1 &  ' 	 B @rm00 rr   