Legend:
- Unmodified
- Added
- Removed
-
šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java
r27 r28 11 11 import java.net.URISyntaxException; 12 12 13 /** 14 * Knihovna funkcí volaných z XSLT. 15 * 16 * TODO: časem rozdělit na více modulů (jmenných prostorů). 17 * 18 * @author fiki 19 */ 13 20 public class Funkce { 14 21 22 /** 23 * Zjištuje, kdy byl naposledy daný soubor změněn. 24 * @param soubor cesta k souboru 25 * @return datum poslední změny 26 * @throws URISyntaxException 27 */ 15 28 public static Date posledníZměna(String soubor) throws URISyntaxException { 16 return new Date(new File(new URI(soubor)).lastModified()); 29 URI uri = new URI(soubor); 30 File f = new File(uri); 31 return new Date(f.lastModified()); 17 32 } 18 33 … … 21 36 * @param zdroják zdrojový kód, který předáme příkazu pygmentize na standardním vstupu 22 37 * @param jazyk předáme příkazu pygmentize jako parametr -l <lexer> 23 * @return TODO: použít (?) místo textu instanci com.icl.saxon.om.NodeInfo http://saxon.sourceforge.net/saxon6.5.3/extensibility.html 38 * @return zvýrazněný text nebo null, pokud došlo k chybě. 39 * TODO: použít (?) místo textu instanci com.icl.saxon.om.NodeInfo http://saxon.sourceforge.net/saxon6.5.3/extensibility.html 24 40 */ 25 41 public static String zvýrazniSyntaxi(String zdroják, String jazyk) throws IOException, InterruptedException { 26 String příkaz = "pygmentize xxx";42 String příkaz = "pygmentize"; 27 43 28 if (isPrikazDostupny(příkaz)) { 44 if (jazyk == null || jazyk.length() == 0) { 45 System.err.println("Není vyplněn atribut „jazyk“ → není jasné, jak se má zvýrazňovat."); 46 return null; 47 } else if (isPrikazDostupny(příkaz)) { 29 48 Runtime r = Runtime.getRuntime(); 30 49 Process p = r.exec(new String[]{příkaz, "-f", "html", "-l", jazyk}); … … 40 59 41 60 if (chyby.length() == 0) { 61 // Pozor: pygmentize má i při chybě návratový kód 0 → je potřeba kontrolovat chybový výstup. 42 62 return výsledek; 43 63 } else { 44 System.err.print ln("Při zvýrazňování syntaxe došlo k chybě: " + chyby);45 return "______chyba_____";64 System.err.print("Při zvýrazňování syntaxe došlo k chybě: " + chyby); 65 return null; 46 66 } 47 67 } else { 48 68 System.err.println("Příkaz " + příkaz + " není na vašem systému dostupný → zvýrazňování syntaxe nebude fungovat."); 49 System.err.println("Můžete ho nainstalovat pomocí: aptitude install python-pygments");50 // TODO: příkaz pro Fedoru/RedHat51 // TODO: vracet escapovaný zdroják v <pre/>52 return "__xxx____chyba_____";69 System.err.println("Můžete ho nainstalovat pomocí:"); 70 System.err.println("\t$ aptitude install python-pygments # (Debian/Ubuntu)"); 71 System.err.println("\t$ yum install python-pygments # (Fedora/RedHat)"); 72 return null; 53 73 } 54 74 } 55 75 76 /** 77 * Čte proud dat dokud to jde a výsledek pak vrátí jako text. 78 * @param proud vstupní proud 79 * @return obsah proudu jako text 80 * @throws IOException 81 */ 56 82 private static String načtiProud(InputStream proud) throws IOException { 57 83 StringBuilder výsledek = new StringBuilder(); … … 69 95 } 70 96 97 /** 98 * Pomocí programu which zjistí, jestli je daný příkaz v systému přítomný. 99 * @param příkaz jehož přítomnost zjišťujeme 100 * @return true pokud příkaz v systému existuje 101 */ 71 102 private static boolean isPrikazDostupny(String příkaz) { 72 103 try {