1.1 --- a/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java Tue Aug 23 20:05:56 2011 +0200
1.2 +++ b/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java Tue Sep 13 18:06:07 2011 +0200
1.3 @@ -23,6 +23,7 @@
1.4
1.5 private static final String PŘÍKAZ_PYGMENTIZE = "pygmentize";
1.6 private static final String PŘÍKAZ_DOT = "dot";
1.7 + private static final String PŘÍKAZ_MARKDOWN = "markdown";
1.8 private static final String PŘÍKAZ_WHICH = "which";
1.9 private static final String ADRESÁŘ_VÝSTUPNÍ = "výstup";
1.10 private static int počítadloDiagramů = 0;
1.11 @@ -147,6 +148,43 @@
1.12 }
1.13
1.14 /**
1.15 + * Převede text ve wiki syntaxi do XHTML.
1.16 + * @param wiki vstupní text v dané wiki syntaxi
1.17 + * @param syntaxe null nebo volitelně syntaxe (markdown, texy)
1.18 + * @return naformátované XHTML
1.19 + */
1.20 + public static String formátujWiki(String wiki, String syntaxe) throws IOException {
1.21 + if (isPříkazDostupný(PŘÍKAZ_MARKDOWN)) {
1.22 + Runtime r = Runtime.getRuntime();
1.23 + Process p = r.exec(new String[]{PŘÍKAZ_MARKDOWN});
1.24 +
1.25 + /**
1.26 + * TODO: oříznout mezery na začátcích řádků, pokud je jich všude stejně?
1.27 + * (odsazení v XML)
1.28 + */
1.29 + PrintStream vstupProcesu = new PrintStream(p.getOutputStream());
1.30 + vstupProcesu.print(wiki);
1.31 + vstupProcesu.close();
1.32 +
1.33 + String chyby = načtiProud(p.getErrorStream());
1.34 + String xhtml = načtiProud(p.getInputStream());
1.35 +
1.36 + if (chyby.length() == 0) {
1.37 + return xhtml;
1.38 + } else {
1.39 + System.err.print("Při zpracování wiki syntaxe došlo k chybě: " + chyby);
1.40 + return null;
1.41 + }
1.42 + } else {
1.43 + System.err.println("Příkaz " + PŘÍKAZ_MARKDOWN + " není na vašem systému dostupný → nelze formátovat texty ve wiki syntaxi.");
1.44 + System.err.println("Můžete ho nainstalovat pomocí:");
1.45 + System.err.println("\t$ aptitude install markdown # (Debian/Ubuntu)");
1.46 + System.err.println("\t$ yum install perl-Text-Markdown # (Fedora/RedHat)");
1.47 + return null;
1.48 + }
1.49 + }
1.50 +
1.51 + /**
1.52 * Čte proud dat dokud to jde a výsledek pak vrátí jako text.
1.53 * @param proud vstupní proud
1.54 * @return obsah proudu jako text