šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java
changeset 31 da6ae32853cb
parent 30 cefd5fe75cb8
child 32 6bc25517ac4f
equal deleted inserted replaced
30:cefd5fe75cb8 31:da6ae32853cb
    37 	/**
    37 	/**
    38 	 * Zvýrazňuje syntaxi zdrojového kódu. Používá k tomu externí program/knihovnu pygmentize.
    38 	 * Zvýrazňuje syntaxi zdrojového kódu. Používá k tomu externí program/knihovnu pygmentize.
    39 	 * @param zdroják zdrojový kód, který předáme příkazu pygmentize na standardním vstupu
    39 	 * @param zdroják zdrojový kód, který předáme příkazu pygmentize na standardním vstupu
    40 	 * @param jazyk předáme příkazu pygmentize jako parametr -l <lexer>
    40 	 * @param jazyk předáme příkazu pygmentize jako parametr -l <lexer>
    41 	 * @return zvýrazněný text nebo null, pokud došlo k chybě.
    41 	 * @return zvýrazněný text nebo null, pokud došlo k chybě.
    42 	 * TODO: použít (?) místo textu instanci com.icl.saxon.om.NodeInfo http://saxon.sourceforge.net/saxon6.5.3/extensibility.html
    42 	 * TODO: 
       
    43 	 *	- použít (?) místo textu instanci com.icl.saxon.om.NodeInfo http://saxon.sourceforge.net/saxon6.5.3/extensibility.html
       
    44 	 *  - nebo kontrolovat validitu vygenerovaného kódu (v současnosti se spoléháme na bezchybnost pygmentize)
    43 	 */
    45 	 */
    44 	public static String zvýrazniSyntaxi(String zdroják, String jazyk) throws IOException, InterruptedException {
    46 	public static String zvýrazniSyntaxi(String zdroják, String jazyk) throws IOException, InterruptedException {
    45 		if (jazyk == null || jazyk.length() == 0) {
    47 		if (jazyk == null || jazyk.length() == 0) {
    46 			System.err.println("Není vyplněn atribut „jazyk“ → není jasné, jak se má zvýrazňovat.");
    48 			System.err.println("Není vyplněn atribut „jazyk“ → není jasné, jak se má zvýrazňovat.");
    47 			return null;
    49 			return null;
    68 		} else {
    70 		} else {
    69 			System.err.println("Příkaz " + PŘÍKAZ_PYGMENTIZE + " není na vašem systému dostupný → zvýrazňování syntaxe nebude fungovat.");
    71 			System.err.println("Příkaz " + PŘÍKAZ_PYGMENTIZE + " není na vašem systému dostupný → zvýrazňování syntaxe nebude fungovat.");
    70 			System.err.println("Můžete ho nainstalovat pomocí:");
    72 			System.err.println("Můžete ho nainstalovat pomocí:");
    71 			System.err.println("\t$ aptitude install python-pygments   # (Debian/Ubuntu)");
    73 			System.err.println("\t$ aptitude install python-pygments   # (Debian/Ubuntu)");
    72 			System.err.println("\t$ yum install python-pygments        # (Fedora/RedHat)");
    74 			System.err.println("\t$ yum install python-pygments        # (Fedora/RedHat)");
       
    75 			return null;
       
    76 		}
       
    77 	}
       
    78 
       
    79 	/**
       
    80 	 * Vygeneruje CSS styl pro zvýrazňování syntaxe.
       
    81 	 * @return obsah CSS souboru nebo null, pokud generování nebylo možné
       
    82 	 */
       
    83 	public static String generujCssSyntaxe() throws IOException, InterruptedException {
       
    84 		if (isPrikazDostupny(PŘÍKAZ_PYGMENTIZE)) {
       
    85 			Runtime r = Runtime.getRuntime();
       
    86 			Process p = r.exec(new String[]{PŘÍKAZ_PYGMENTIZE, "-S", "default", "-f", "html"});
       
    87 			return načtiProud(p.getInputStream());
       
    88 		} else {
    73 			return null;
    89 			return null;
    74 		}
    90 		}
    75 	}
    91 	}
    76 
    92 
    77 	/**
    93 	/**