#12 konstanty příkazů + chybová hláška u which.
--- a/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java Mon Aug 22 01:17:12 2011 +0200
+++ b/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java Mon Aug 22 01:26:23 2011 +0200
@@ -19,6 +19,9 @@
*/
public class Funkce {
+ private static final String PŘÍKAZ_PYGMENTIZE = "pygmentize";
+ private static final String PŘÍKAZ_WHICH = "which";
+
/**
* Zjištuje, kdy byl naposledy daný soubor změněn.
* @param soubor cesta k souboru
@@ -39,14 +42,12 @@
* TODO: použít (?) místo textu instanci com.icl.saxon.om.NodeInfo http://saxon.sourceforge.net/saxon6.5.3/extensibility.html
*/
public static String zvýrazniSyntaxi(String zdroják, String jazyk) throws IOException, InterruptedException {
- String příkaz = "pygmentize";
-
if (jazyk == null || jazyk.length() == 0) {
System.err.println("Není vyplněn atribut „jazyk“ → není jasné, jak se má zvýrazňovat.");
return null;
- } else if (isPrikazDostupny(příkaz)) {
+ } else if (isPrikazDostupny(PŘÍKAZ_PYGMENTIZE)) {
Runtime r = Runtime.getRuntime();
- Process p = r.exec(new String[]{příkaz, "-f", "html", "-l", jazyk});
+ Process p = r.exec(new String[]{PŘÍKAZ_PYGMENTIZE, "-f", "html", "-l", jazyk});
PrintStream vstupProcesu = new PrintStream(p.getOutputStream());
vstupProcesu.print(zdroják);
@@ -65,7 +66,7 @@
return null;
}
} else {
- System.err.println("Příkaz " + příkaz + " není na vašem systému dostupný → zvýrazňování syntaxe nebude fungovat.");
+ System.err.println("Příkaz " + PŘÍKAZ_PYGMENTIZE + " není na vašem systému dostupný → zvýrazňování syntaxe nebude fungovat.");
System.err.println("Můžete ho nainstalovat pomocí:");
System.err.println("\t$ aptitude install python-pygments # (Debian/Ubuntu)");
System.err.println("\t$ yum install python-pygments # (Fedora/RedHat)");
@@ -102,10 +103,11 @@
private static boolean isPrikazDostupny(String příkaz) {
try {
Runtime r = Runtime.getRuntime();
- Process p = r.exec(new String[]{"which", příkaz});
+ Process p = r.exec(new String[]{PŘÍKAZ_WHICH, příkaz});
p.waitFor();
return p.exitValue() == 0;
} catch (Exception e) {
+ System.err.printf("Při zjišťování dostupnosti příkazu „%s“ došlo k chybě: %s", příkaz, e.getLocalizedMessage());
return false;
}
}