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 */ |