Show
Ignore:
Timestamp:
07/05/12 19:10:42 (12 years ago)
Author:
František Kučera <franta-hg@…>
Branch:
default
Message:

#20 Skriptování: Makra ve skriptech a Skripty v makrech + výpis verzí z Mercurialu.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • vstup/skriptování.xml

    r105 r107  
    2323                <p> 
    2424                        Díky skriptování můžeme stránky obohatit o prakticky libovolný obsah –  
    25                         jak prostý text, tak i XHTML fragmenty.<m:podČarou>zapíná se pomocí atributu  
    26                         <code>výstup="xml"</code> a generátor pak kontroluje správné formátování –  
    27                         nestane se vám, že byste omylem vygenerovali stránky s překříženými nebo neuzavřenými značkami.</m:podČarou> 
     25                        jak prostý text, tak i XHTML fragmenty.<m:podČarou> 
     26                                Zapíná se pomocí atributu <code>výstup="xml"</code> a generátor pak kontroluje správné formátování –  
     27                                nestane se vám, že byste omylem vygenerovali stránky s překříženými nebo neuzavřenými značkami. 
     28                                Výchozím jmenným prostorem je XHTML a je dostupný i jmenný prostor pro makra (<code>m</code>). 
     29                        </m:podČarou> 
    2830                </p> 
    2931                <p> 
     
    6365                </table> 
    6466 
    65                 <h2>Perl</h2> 
     67                <h2>Perl – ukázka</h2> 
    6668                <p>Jazyky použité nebo citované na této stránce:</p> 
    6769                <!-- 
     
    8789                        ]]></m:skript></pre> 
    8890 
    89                         <h2>BASH</h2> 
     91                        <h2>BASH – ukázka</h2> 
    9092                <pre><m:skript jazyk="bash"><![CDATA[ 
    9193echo -n "Právě je: "; 
     
    144146                ]]></m:skript></pre> 
    145147 
     148                <h2>Makra ve skriptech</h2> 
     149                <p> 
     150                        XML generované skriptem může také obsahovat makra, která se následně interptetují. 
     151                        <m:skript jazyk="bash" výstup="xml"><![CDATA[ 
     152echo '<m:skript jazyk="bash">'; # Ty zrůdo! :-) 
     153echo 'echo "Takže můžeš skriptovat, když skriptuješ,";'; 
     154echo '</m:skript>'; 
     155                        ]]></m:skript> 
     156                        nebo dělat něco užitečnějšího. 
     157                </p> 
     158                 
     159                <m:skript jazyk="perl" výstup="xml"><![CDATA[ 
     160use strict; 
     161use warnings; 
     162 
     163my $adresar = "vstup/makra"; 
     164 
     165print "<m:diagram nadpis='Uživatelská makra v adresáři $adresar'>\n"; 
     166print " node            [shape=\"box\"];\n"; 
     167print " koren   [label=\"Uživatelská makra\"];\n"; 
     168 
     169opendir(DIR, $adresar) or die $!; 
     170my $i = 0; 
     171while (readdir(DIR)) { 
     172        next if (/^\./); 
     173        # Měli bychom ošetřit zvláštní znaky v názvech souborů, 
     174        # abychom nezpůsobili chybu GraphVizu. 
     175        print "n$i      [label=\"$_\"];\n"; 
     176        print "koren -> n$i;\n"; 
     177        $i++; 
     178} 
     179print "</m:diagram>"; 
     180closedir(DIR); 
     181                ]]></m:skript> 
     182                 
     183                <p>…třeba vygenerovat tento diagram následujícím perlovským skriptem:</p> 
     184                 
     185                <m:pre jazyk="perl"><![CDATA[ 
     186use strict; 
     187use warnings; 
     188 
     189my $adresar = "vstup/makra"; 
     190 
     191print "<m:diagram nadpis='Uživatelská makra v adresáři $adresar'>\n"; 
     192print " node    [shape=\"box\"];\n"; 
     193print " koren   [label=\"Uživatelská makra\"];\n"; 
     194 
     195opendir(DIR, $adresar) or die $!; 
     196my $i = 0; 
     197while (readdir(DIR)) { 
     198        next if (/^\./); 
     199        # Měli bychom ošetřit zvláštní znaky v názvech souborů, 
     200        # abychom nezpůsobili chybu GraphVizu. 
     201        print "n$i      [label=\"$_\"];\n"; 
     202        print "koren -> n$i;\n"; 
     203        $i++; 
     204} 
     205print "</m:diagram>"; 
     206closedir(DIR);]]></m:pre> 
     207 
     208                <p> 
     209                        Který vložíme zabalený v <code><![CDATA[<m:skript jazyk="perl" výstup="xml"> … </m:skript>]]></code> do stránky. 
     210                </p> 
     211                <p> 
     212                        Známá chyba: ve skriptech zatím nefungují poznámky pod čarou (a není jisté, jestli kdy fungovat budou – pravděpodobně by to vyžadovalo vícefázové zpracování). 
     213                </p> 
     214 
     215                <h2>Skripty v makrech</h2> 
     216                <p> 
     217                        Uvnitř maker můžeme volat<m:podČarou> 
     218                                Ovšem trochu jiným způsobem, než ve stránkách – 
     219                                nacházíme se totiž v <em>programu</em> (XSL šablona definující makro) 
     220                                nikoli v <em>datovém souboru</em> (XML stránka). 
     221                        </m:podČarou> 
     222                        jiná makra – mj. skripty. 
     223                        Toho jsme využili v makru, které generuje tabulku verzí z mercurialu: 
     224                </p> 
     225 
     226                <m:hg-verze/> 
     227 
     228                <p> 
     229                        Toto makro naleznete v souboru <code>vstup/makra/hg-verze.xsl</code>. 
     230                </p> 
     231 
    146232        </text> 
    147233