#7 Wiki syntaxe: Texy – experimentální a oficiálně nepodporované.
Používá Texy interpret na vzdáleném HTTP serveru.
1.1 --- a/vstup/css/styl.css Wed Feb 08 17:58:17 2012 +0100
1.2 +++ b/vstup/css/styl.css Thu Feb 09 12:54:49 2012 +0100
1.3 @@ -119,13 +119,16 @@
1.4 table {
1.5 border-collapse:collapse;
1.6 box-shadow: 3px 3px 3px grey;
1.7 + margin-top: 10px;
1.8 + margin-bottom: 10px;
1.9 }
1.10 -td {
1.11 +td, th {
1.12 border: 1px solid black;
1.13 padding-top: 4px;
1.14 padding-bottom: 4px;
1.15 padding-left: 6px;
1.16 padding-right: 6px;
1.17 + font-weight: normal;
1.18 }
1.19 td.číslo {
1.20 text-align: right;
1.21 @@ -190,3 +193,13 @@
1.22 margin-right: 4px;
1.23 }
1.24
1.25 +
1.26 +blockquote {
1.27 + background-color: #ddf;
1.28 + padding-top: 3px;
1.29 + padding-bottom: 3px;
1.30 + padding-left: 16px;
1.31 + padding-right: 16px;
1.32 + border-radius: 4px;
1.33 +}
1.34 +
2.1 --- a/šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Wiki.java Wed Feb 08 17:58:17 2012 +0100
2.2 +++ b/šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Wiki.java Thu Feb 09 12:54:49 2012 +0100
2.3 @@ -1,46 +1,75 @@
2.4 /**
2.5 * XML Web generátor – program na generování webových stránek
2.6 * Copyright © 2012 František Kučera (frantovo.cz)
2.7 - *
2.8 + *
2.9 * This program is free software: you can redistribute it and/or modify
2.10 * it under the terms of the GNU General Public License as published by
2.11 * the Free Software Foundation, either version 3 of the License, or
2.12 * (at your option) any later version.
2.13 - *
2.14 + *
2.15 * This program is distributed in the hope that it will be useful,
2.16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2.17 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2.18 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2.19 * GNU General Public License for more details.
2.20 - *
2.21 + *
2.22 * You should have received a copy of the GNU General Public License
2.23 - * along with this program. If not, see <http://www.gnu.org/licenses/>.
2.24 + * along with this program. If not, see <http://www.gnu.org/licenses/>.
2.25 */
2.26 package cz.frantovo.xmlWebGenerator.makra;
2.27
2.28 import java.io.IOException;
2.29 import java.io.PrintStream;
2.30 import static cz.frantovo.xmlWebGenerator.NástrojeCLI.*;
2.31 +import java.io.BufferedReader;
2.32 +import java.io.InputStreamReader;
2.33 +import java.io.OutputStreamWriter;
2.34 +import java.net.URL;
2.35 +import java.net.URLConnection;
2.36 +import java.net.URLEncoder;
2.37
2.38 /**
2.39 * Wiki syntaxe
2.40 - *
2.41 + *
2.42 * @author František Kučera (frantovo.cz)
2.43 */
2.44 public class Wiki {
2.45
2.46 + public enum SYNTAXE {
2.47 +
2.48 + markdown,
2.49 + texy
2.50 + }
2.51 private static final String PŘÍKAZ_MARKDOWN = "markdown";
2.52 + /**
2.53 + * Zde číhá tento PHP skript:
2.54 + * https://hg.frantovo.cz/nekurak.net/file/tip/php/texy/http/index.php
2.55 + */
2.56 + private static final String URL_TEXY = "http://nekurak.net/texy/http/";
2.57
2.58 /**
2.59 * Převede text ve wiki syntaxi do XHTML.
2.60 + *
2.61 * @param wiki vstupní text v dané wiki syntaxi
2.62 * @param syntaxe null nebo volitelně syntaxe (markdown, texy)
2.63 * @return naformátované XHTML
2.64 - * TODO:
2.65 - * - vracet místo textu instanci com.icl.saxon.om.NodeInfo http://saxon.sourceforge.net/saxon6.5.3/extensibility.html
2.66 - * - nebo kontrolovat validitu vygenerovaného kódu (v současnosti se spoléháme na bezchybnost markdownu)
2.67 -
2.68 + * TODO:
2.69 + * - vracet místo textu instanci com.icl.saxon.om.NodeInfo
2.70 + * http://saxon.sourceforge.net/saxon6.5.3/extensibility.html
2.71 + * - nebo kontrolovat validitu vygenerovaného kódu (v současnosti se spoléháme na bezchybnost
2.72 + * markdownu případně texy)
2.73 + *
2.74 */
2.75 public static String formátujWiki(String wiki, String syntaxe) throws IOException {
2.76 + if (syntaxe == null || SYNTAXE.valueOf(syntaxe) == SYNTAXE.markdown) {
2.77 + return formátujMarkdown(wiki);
2.78 + } else if (SYNTAXE.valueOf(syntaxe) == SYNTAXE.texy) {
2.79 + return formátujTexy(wiki);
2.80 + } else {
2.81 + throw new IllegalArgumentException("Syntaxe není podporovaná: " + syntaxe);
2.82 + }
2.83 + }
2.84 +
2.85 + private static String formátujMarkdown(String wiki) throws IOException {
2.86 if (isPříkazDostupný(PŘÍKAZ_MARKDOWN)) {
2.87 Runtime r = Runtime.getRuntime();
2.88 Process p = r.exec(new String[]{PŘÍKAZ_MARKDOWN});
2.89 @@ -70,5 +99,63 @@
2.90 return null;
2.91 }
2.92 }
2.93 +
2.94 + /**
2.95 + * Texy! syntaxe je experimentální a oficiálně nepodporovaná.
2.96 + *
2.97 + * TODO: až bude balíček texy pro GNU/Linuxové distribuce:
2.98 + * http://forum.texy.info/cs/873-balicek-pro-linuxove-distribuce
2.99 + * řešit stejně jako Markdown.
2.100 + */
2.101 + private static String formátujTexy(String wiki) throws IOException {
2.102 + System.out.println("Pozor: Texy! wiki syntaxe je experimentální a oficiálně nepodporovaná.");
2.103 + System.out.println("Pozor: používáte na vlastní nebezpečí!");
2.104 + System.out.println("Pozor: text k interpretování bude odeslán na vzdálené URL: " + URL_TEXY);
2.105 + System.out.println("Pokračovat? [a/N]");
2.106 + int pokračovat = System.in.read();
2.107 +
2.108 + if (pokračovat == 'a') {
2.109 + OutputStreamWriter požadavek = null;
2.110 + BufferedReader odpověď = null;
2.111 + final String kódování = "UTF-8";
2.112 + try {
2.113 + URL url = new URL(URL_TEXY);
2.114 + URLConnection spojeni = url.openConnection();
2.115 + spojeni.setDoOutput(true);
2.116 +
2.117 + /** Odešleme data */
2.118 + požadavek = new OutputStreamWriter(spojeni.getOutputStream());
2.119 + požadavek.write(URLEncoder.encode(wiki, kódování));
2.120 + požadavek.flush();
2.121 +
2.122 + /** Přijmeme odpověď */
2.123 + odpověď = new BufferedReader(new InputStreamReader(spojeni.getInputStream(), kódování));
2.124 + StringBuilder vysledek = new StringBuilder();
2.125 + String radka;
2.126 + while ((radka = odpověď.readLine()) != null) {
2.127 + vysledek.append(radka);
2.128 + vysledek.append("\n");
2.129 + }
2.130 +
2.131 + return vysledek.toString();
2.132 + } catch (Exception e) {
2.133 + throw new RuntimeException("Chyba při zpracovávání Texy! syntaxe: " + wiki, e);
2.134 + } finally {
2.135 + try {
2.136 + požadavek.close();
2.137 + } catch (IOException e) {
2.138 + e.printStackTrace(System.err);
2.139 + }
2.140 + try {
2.141 + odpověď.close();
2.142 + } catch (IOException e) {
2.143 + e.printStackTrace(System.err);
2.144 + }
2.145 + }
2.146 + } else {
2.147 + String hláška = "Texy! wiki syntaxe nebyla interpretována. Zdrojový text nebyl nikam odeslán.";
2.148 + System.out.println(hláška);
2.149 + return "<!-- " + hláška + " -->";
2.150 + }
2.151 + }
2.152 }
2.153 -