diff -r 5be21d1ef5f8 -r 2e4e7891a2f7 šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java --- a/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java Tue Aug 23 20:05:56 2011 +0200 +++ b/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java Tue Sep 13 18:06:07 2011 +0200 @@ -23,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 PŘÍKAZ_WHICH = "which"; private static final String ADRESÁŘ_VÝSTUPNÍ = "výstup"; private static int počítadloDiagramů = 0; @@ -147,6 +148,43 @@ } /** + * Převede text ve wiki syntaxi do XHTML. + * @param wiki vstupní text v dané wiki syntaxi + * @param syntaxe null nebo volitelně syntaxe (markdown, texy) + * @return naformátované XHTML + */ + public static String formátujWiki(String wiki, String syntaxe) throws IOException { + if (isPříkazDostupný(PŘÍKAZ_MARKDOWN)) { + Runtime r = Runtime.getRuntime(); + Process p = r.exec(new String[]{PŘÍKAZ_MARKDOWN}); + + /** + * TODO: oříznout mezery na začátcích řádků, pokud je jich všude stejně? + * (odsazení v XML) + */ + PrintStream vstupProcesu = new PrintStream(p.getOutputStream()); + vstupProcesu.print(wiki); + vstupProcesu.close(); + + String chyby = načtiProud(p.getErrorStream()); + String xhtml = načtiProud(p.getInputStream()); + + if (chyby.length() == 0) { + return xhtml; + } else { + System.err.print("Při zpracování wiki syntaxe došlo k chybě: " + chyby); + return null; + } + } else { + System.err.println("Příkaz " + PŘÍKAZ_MARKDOWN + " není na vašem systému dostupný → nelze formátovat texty ve wiki syntaxi."); + System.err.println("Můžete ho nainstalovat pomocí:"); + System.err.println("\t$ aptitude install markdown # (Debian/Ubuntu)"); + System.err.println("\t$ yum install perl-Text-Markdown # (Fedora/RedHat)"); + return null; + } + } + + /** * Čte proud dat dokud to jde a výsledek pak vrátí jako text. * @param proud vstupní proud * @return obsah proudu jako text