Zvýrazňování syntaxe: zdroják nemusí být vložen uvnitř značky <m:pre/>, ale může být v souboru určeném atributem src="název-souboru".
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sat, 31 Dec 2011 17:52:21 +0100
changeset 40 487f13126b62
parent 39 58921872e53b
child 41 035e690ce9c6
Zvýrazňování syntaxe: zdroják nemusí být vložen uvnitř značky <m:pre/>, ale může být v souboru určeném atributem src="název-souboru".
.hgignore
vstup/matrixový-spořič.sh
vstup/zdrojáky.xml
šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java
šablona/stránka.xsl
--- a/.hgignore	Tue Sep 13 18:57:24 2011 +0200
+++ b/.hgignore	Sat Dec 31 17:52:21 2011 +0100
@@ -3,3 +3,4 @@
 šablona/funkce/build/*
 vstup/.seznam.xml
 analýza/princip.png
+nbproject/private
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vstup/matrixový-spořič.sh	Sat Dec 31 17:52:21 2011 +0100
@@ -0,0 +1,16 @@
+#!/bin/bash
+# Matrixový spořič :-)
+
+case "$1" in
+    start)
+        echo -e "\033[22;32m";
+        cat /dev/urandom | hexdump;
+;;
+    stop)
+        echo -e "\033[0m";
+;;
+    *)
+        $0 start;
+;;
+esac
+
--- a/vstup/zdrojáky.xml	Tue Sep 13 18:57:24 2011 +0200
+++ b/vstup/zdrojáky.xml	Sat Dec 31 17:52:21 2011 +0100
@@ -53,21 +53,7 @@
 
 		<h2>BASH</h2>
 		
-		<m:pre jazyk="bash">#!/bin/bash
-# Matrixový spořič :-)
-
-case "$1" in
-    start)
-        echo -e "\033[22;32m";
-        cat /dev/urandom | hexdump;
-;;
-    stop)
-        echo -e "\033[0m";
-;;
-    *)
-        $0 start;
-;;
-esac</m:pre>
+		<m:pre jazyk="bash" src="matrixový-spořič.sh"/>
 
 		<h2>Chyby</h2>
 		
--- a/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java	Tue Sep 13 18:57:24 2011 +0200
+++ b/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java	Sat Dec 31 17:52:21 2011 +0100
@@ -1,6 +1,7 @@
 package cz.frantovo.xmlWebGenerator;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.PrintStream;
 import java.util.Date;
@@ -22,6 +23,7 @@
 	private static final String PŘÍKAZ_PYGMENTIZE = "pygmentize";
 	private static final String PŘÍKAZ_DOT = "dot";
 	private static final String PŘÍKAZ_MARKDOWN = "markdown";
+	private static final String ADRESÁŘ_VSTUPNÍ = "vstup";
 	private static final String ADRESÁŘ_VÝSTUPNÍ = "výstup";
 	private static int počítadloDiagramů = 0;
 
@@ -80,6 +82,17 @@
 	}
 
 	/**
+	 * TODO: prohodit volání mezi zvýrazniSyntaxiSouboru() a zvýrazniSyntaxi(), 
+	 * aby se nepřeváděl proud na text a pak zase na proud.
+	 * 
+	 * @param src cesta k souboru, jehož obsah se má zvýraznit a vložit
+	 */
+	public static String zvýrazniSyntaxiSouboru(String src, String jazyk) throws IOException, InterruptedException {
+		String zdroják = načtiProud(new FileInputStream(new File(ADRESÁŘ_VSTUPNÍ, src)));
+		return zvýrazniSyntaxi(zdroják, jazyk);
+	}
+
+	/**
 	 * Vygeneruje CSS styl pro zvýrazňování syntaxe.
 	 * @return obsah CSS souboru nebo null, pokud generování nebylo možné
 	 */
--- a/šablona/stránka.xsl	Tue Sep 13 18:57:24 2011 +0200
+++ b/šablona/stránka.xsl	Sat Dec 31 17:52:21 2011 +0100
@@ -123,7 +123,19 @@
     	Makro pro zvýraznění syntaxe:
     -->    
     <xsl:template match="m:pre">
-    	<xsl:variable name="zvýrazněnýText" select="j:zvýrazniSyntaxi(text(), @jazyk)"/>
+    	<xsl:call-template name="vypišPre">
+    		<xsl:with-param name="zvýrazněnýText" select="j:zvýrazniSyntaxi(text(), @jazyk)"/>
+    	</xsl:call-template>
+    </xsl:template>
+    
+    <xsl:template match="m:pre[@src]">
+    	<xsl:call-template name="vypišPre">
+    		<xsl:with-param name="zvýrazněnýText" select="j:zvýrazniSyntaxiSouboru(@src, @jazyk)"/>
+    	</xsl:call-template>
+    </xsl:template>
+    
+    <xsl:template name="vypišPre">
+    	<xsl:param name="zvýrazněnýText"/>
     	<xsl:choose>
     		<xsl:when test="$zvýrazněnýText">
     			<xsl:comment>Následující kód je v jazyce <xsl:value-of select="@jazyk"/></xsl:comment>