šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java
changeset 37 2e4e7891a2f7
parent 36 5be21d1ef5f8
child 38 43505795334d
     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