šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java
changeset 37 2e4e7891a2f7
parent 36 5be21d1ef5f8
child 38 43505795334d
equal deleted inserted replaced
36:5be21d1ef5f8 37:2e4e7891a2f7
    21  */
    21  */
    22 public class Funkce {
    22 public class Funkce {
    23 
    23 
    24 	private static final String PŘÍKAZ_PYGMENTIZE = "pygmentize";
    24 	private static final String PŘÍKAZ_PYGMENTIZE = "pygmentize";
    25 	private static final String PŘÍKAZ_DOT = "dot";
    25 	private static final String PŘÍKAZ_DOT = "dot";
       
    26 	private static final String PŘÍKAZ_MARKDOWN = "markdown";
    26 	private static final String PŘÍKAZ_WHICH = "which";
    27 	private static final String PŘÍKAZ_WHICH = "which";
    27 	private static final String ADRESÁŘ_VÝSTUPNÍ = "výstup";
    28 	private static final String ADRESÁŘ_VÝSTUPNÍ = "výstup";
    28 	private static int počítadloDiagramů = 0;
    29 	private static int počítadloDiagramů = 0;
    29 
    30 
    30 	/**
    31 	/**
   145 			return null;
   146 			return null;
   146 		}
   147 		}
   147 	}
   148 	}
   148 
   149 
   149 	/**
   150 	/**
       
   151 	 * Převede text ve wiki syntaxi do XHTML.
       
   152 	 * @param wiki vstupní text v dané wiki syntaxi
       
   153 	 * @param syntaxe null nebo volitelně syntaxe (markdown, texy)
       
   154 	 * @return naformátované XHTML
       
   155 	 */
       
   156 	public static String formátujWiki(String wiki, String syntaxe) throws IOException {
       
   157 		if (isPříkazDostupný(PŘÍKAZ_MARKDOWN)) {
       
   158 			Runtime r = Runtime.getRuntime();
       
   159 			Process p = r.exec(new String[]{PŘÍKAZ_MARKDOWN});
       
   160 
       
   161 			/**
       
   162 			 * TODO: oříznout mezery na začátcích řádků, pokud je jich všude stejně?
       
   163 			 * (odsazení v XML)
       
   164 			 */
       
   165 			PrintStream vstupProcesu = new PrintStream(p.getOutputStream());
       
   166 			vstupProcesu.print(wiki);
       
   167 			vstupProcesu.close();
       
   168 
       
   169 			String chyby = načtiProud(p.getErrorStream());
       
   170 			String xhtml = načtiProud(p.getInputStream());
       
   171 
       
   172 			if (chyby.length() == 0) {
       
   173 				return xhtml;
       
   174 			} else {
       
   175 				System.err.print("Při zpracování wiki syntaxe došlo k chybě: " + chyby);
       
   176 				return null;
       
   177 			}
       
   178 		} else {
       
   179 			System.err.println("Příkaz " + PŘÍKAZ_MARKDOWN + " není na vašem systému dostupný → nelze formátovat texty ve wiki syntaxi.");
       
   180 			System.err.println("Můžete ho nainstalovat pomocí:");
       
   181 			System.err.println("\t$ aptitude install markdown         # (Debian/Ubuntu)");
       
   182 			System.err.println("\t$ yum install perl-Text-Markdown    # (Fedora/RedHat)");
       
   183 			return null;
       
   184 		}
       
   185 	}
       
   186 
       
   187 	/**
   150 	 * Čte proud dat dokud to jde a výsledek pak vrátí jako text.
   188 	 * Čte proud dat dokud to jde a výsledek pak vrátí jako text.
   151 	 * @param proud vstupní proud
   189 	 * @param proud vstupní proud
   152 	 * @return obsah proudu jako text
   190 	 * @return obsah proudu jako text
   153 	 * @throws IOException 
   191 	 * @throws IOException 
   154 	 */
   192 	 */