# HG changeset patch # User František Kučera <franta-hg@frantovo.cz> # Date 1341574895 -7200 # Node ID 7d4b23ccf144f275433458c7fcf8bc037c4ddcb9 # Parent d59023a42d4b13b19ae989f87fa5b3972b1dfa40 #20 Skriptování: kód ke zvýraznění syntaxe generovaný skriptem diff -r d59023a42d4b -r 7d4b23ccf144 vstup/skriptování.xml --- a/vstup/skriptování.xml Thu Jul 05 23:31:49 2012 +0200 +++ b/vstup/skriptování.xml Fri Jul 06 13:41:35 2012 +0200 @@ -286,6 +286,13 @@ Někdy se ale může hodit ve skriptu nastavovat atributy elementů nebo elementy vytvářet dynamicky. </p> + <p> + Skriptování lze použít i pro generování zdrojového kódu, který bude následně zvýrazněn + pomocí značky <code><m:pre jazyk="…"/></code>. + Toho využíváme na stránce <m:a href="zdrojáky">Zdrojové kódy</m:a> v případě SQL a XML ukázek. + Skript můžeme použít mj. i ke zkrácení zdrojáku – když chceme vypsat jen jeho relevantní část. + </p> + </text> </stránka> diff -r d59023a42d4b -r 7d4b23ccf144 vstup/zdrojáky.xml --- a/vstup/zdrojáky.xml Thu Jul 05 23:31:49 2012 +0200 +++ b/vstup/zdrojáky.xml Fri Jul 06 13:41:35 2012 +0200 @@ -41,16 +41,26 @@ <h2>Java</h2> - <m:pre jazyk="java">public class Pokus { - // komentář - // <JavaRulezz/> -}</m:pre> + <m:pre jazyk="java" src="../šablona/funkce/src/cz/frantovo/xmlWebGenerator/Xmlns.java"/> <h2>XML</h2> - <m:pre jazyk="xml"><![CDATA[<xmlDokument> - <element1>toto je <strong>pěkné</strong> XML!!!</element1> -</xmlDokument>]]></m:pre> + <p> + Zdroják aktuální stránky – <abbr title="diakritika byla odstraněna, protože v Pygmentize je chyba – neumí značky s diakritikou, přestože to je platné XML">upravený</abbr> a zkrácený pomocí <m:a href="skriptování">skriptu</m:a>: + </p> + <m:pre jazyk="xml"><m:skript jazyk="bash"> +# V zvýrazňovači Pygmentize je chyba: nepodporuje znaky s diakritikou, přestože v daném jazyce můžou být. +# TODO: opravit to tam (zřejmě špatný regulární výraz). + +cat $XWG_STRANKA_SOUBOR | iconv -t ASCII//TRANSLIT -f UTF-8 | head -n 8; +echo -e "\t\t… zkráceno …"; +cat $XWG_STRANKA_SOUBOR | iconv -t ASCII//TRANSLIT -f UTF-8 | tail -n 4; + +# Případně: +# cat $XWG_STRANKA_SOUBOR | sed s/á/a/g | sed s/ř/r/g | sed s/í/i/g | head -n 8; +# echo -e "\t\t… zkráceno …"; +# cat $XWG_STRANKA_SOUBOR | sed s/á/a/g | sed s/ř/r/g | sed s/í/i/g | tail -n 4; + </m:skript></m:pre> <p>Další ukázka XML: <m:a href="šablona/makra/tabulka.xsl" typ="zdroják" řádek="25">tabulka.xsl</m:a>.</p> @@ -58,6 +68,22 @@ <m:pre jazyk="bash" src="matrixový-spořič.sh" odkaz="ano"/> + <h2>SQL</h2> + + <p> + Tento SQL kód není zapsán přímo ve stránce, ale byl vygenerován pomocí <m:a href="skriptování">skriptu</m:a>, + a poté zvýrazněn. + </p> + + <m:pre jazyk="sql"><m:skript jazyk="perl"><![CDATA[ +use strict; +use warnings; + +for (my $i = 0; $i < 10; $i++) { + print "INSERT INTO tabulka VALUES ('abc $i', 'def ". $i*($i+1) . "', " . 2**$i . ");\n"; +} + ]]></m:skript></m:pre> + <h2>Chyby</h2> <p>Následující ukázky kódu nebudou zvýrazněné:</p> diff -r d59023a42d4b -r 7d4b23ccf144 šablona/funkce/src/cz/frantovo/xmlWebGenerator/Xmlns.java --- a/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Xmlns.java Thu Jul 05 23:31:49 2012 +0200 +++ b/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Xmlns.java Fri Jul 06 13:41:35 2012 +0200 @@ -8,7 +8,8 @@ public class Xmlns { public static final String XHTML = "http://www.w3.org/1999/xhtml"; - public static final String MAKRO = "https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"; + public static final String MAKRO = + "https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"; private Xmlns() { } diff -r d59023a42d4b -r 7d4b23ccf144 šablona/makra/zvýraznění-syntaxe.xsl --- a/šablona/makra/zvýraznění-syntaxe.xsl Thu Jul 05 23:31:49 2012 +0200 +++ b/šablona/makra/zvýraznění-syntaxe.xsl Fri Jul 06 13:41:35 2012 +0200 @@ -33,8 +33,11 @@ @odkaz nastavíme hodnotu „ano“, pokud chceme vložit odkaz na soubor je stažení --> <xsl:template match="m:pre"> + <xsl:variable name="zadání"> + <xsl:apply-templates select="*|text()"/> + </xsl:variable> <xsl:call-template name="zvýrazniZdroják"> - <xsl:with-param name="zdroják" select="text()"/> + <xsl:with-param name="zdroják" select="$zadání/text()"/> </xsl:call-template> </xsl:template>