Changeset 92:8d34f2020884

Show
Ignore:
Timestamp:
02/09/12 12:54:49 (12 years ago)
Author:
František Kučera <franta-hg@…>
Branch:
default
Message:

#7 Wiki syntaxe: Texy – experimentální a oficiálně nepodporované.
Používá Texy interpret na vzdáleném HTTP serveru.

Files:
2 modified

Legend:

Unmodified
Added
Removed
  • vstup/css/styl.css

    r91 r92  
    120120        border-collapse:collapse; 
    121121        box-shadow: 3px 3px 3px grey; 
    122 } 
    123 td { 
     122        margin-top: 10px; 
     123        margin-bottom: 10px; 
     124} 
     125td, th { 
    124126        border: 1px solid black; 
    125127        padding-top: 4px; 
     
    127129        padding-left: 6px; 
    128130        padding-right: 6px; 
     131        font-weight: normal; 
    129132} 
    130133td.číslo { 
     
    191194} 
    192195 
     196 
     197blockquote { 
     198        background-color: #ddf; 
     199        padding-top: 3px; 
     200        padding-bottom: 3px; 
     201        padding-left: 16px; 
     202        padding-right: 16px; 
     203        border-radius: 4px; 
     204} 
     205 
  • šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Wiki.java

    r87 r92  
    22 * XML Web generátor – program na generování webových stránek 
    33 * Copyright © 2012 František Kučera (frantovo.cz) 
    4  *  
     4 * 
    55 * This program is free software: you can redistribute it and/or modify 
    66 * it under the terms of the GNU General Public License as published by 
    77 * the Free Software Foundation, either version 3 of the License, or 
    88 * (at your option) any later version. 
    9  *  
     9 * 
    1010 * This program is distributed in the hope that it will be useful, 
    1111 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
    12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
    1313 * GNU General Public License for more details. 
    14  *  
     14 * 
    1515 * You should have received a copy of the GNU General Public License 
    16  * along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 
    1717 */ 
    1818package cz.frantovo.xmlWebGenerator.makra; 
     
    2121import java.io.PrintStream; 
    2222import static cz.frantovo.xmlWebGenerator.NástrojeCLI.*; 
     23import java.io.BufferedReader; 
     24import java.io.InputStreamReader; 
     25import java.io.OutputStreamWriter; 
     26import java.net.URL; 
     27import java.net.URLConnection; 
     28import java.net.URLEncoder; 
    2329 
    2430/** 
    2531 * Wiki syntaxe 
    26  *  
     32 * 
    2733 * @author František Kučera (frantovo.cz) 
    2834 */ 
    2935public class Wiki { 
    3036 
     37        public enum SYNTAXE { 
     38 
     39                markdown, 
     40                texy 
     41        } 
    3142        private static final String PŘÍKAZ_MARKDOWN = "markdown"; 
     43        /** 
     44         * Zde číhá tento PHP skript: 
     45         * https://hg.frantovo.cz/nekurak.net/file/tip/php/texy/http/index.php 
     46         */ 
     47        private static final String URL_TEXY = "http://nekurak.net/texy/http/"; 
    3248 
    3349        /** 
    3450         * Převede text ve wiki syntaxi do XHTML. 
     51         * 
    3552         * @param wiki vstupní text v dané wiki syntaxi 
    3653         * @param syntaxe null nebo volitelně syntaxe (markdown, texy) 
    3754         * @return naformátované XHTML 
    38          * TODO:  
    39          *      - vracet místo textu instanci com.icl.saxon.om.NodeInfo http://saxon.sourceforge.net/saxon6.5.3/extensibility.html 
    40          *  - nebo kontrolovat validitu vygenerovaného kódu (v současnosti se spoléháme na bezchybnost markdownu) 
    41           
     55         * TODO: 
     56         * - vracet místo textu instanci com.icl.saxon.om.NodeInfo 
     57         * http://saxon.sourceforge.net/saxon6.5.3/extensibility.html 
     58         * - nebo kontrolovat validitu vygenerovaného kódu (v současnosti se spoléháme na bezchybnost 
     59         * markdownu případně texy) 
     60         * 
    4261         */ 
    4362        public static String formátujWiki(String wiki, String syntaxe) throws IOException { 
     63                if (syntaxe == null || SYNTAXE.valueOf(syntaxe) == SYNTAXE.markdown) { 
     64                        return formátujMarkdown(wiki); 
     65                } else if (SYNTAXE.valueOf(syntaxe) == SYNTAXE.texy) { 
     66                        return formátujTexy(wiki); 
     67                } else { 
     68                        throw new IllegalArgumentException("Syntaxe není podporovaná: " + syntaxe); 
     69                } 
     70        } 
     71 
     72        private static String formátujMarkdown(String wiki) throws IOException { 
    4473                if (isPříkazDostupný(PŘÍKAZ_MARKDOWN)) { 
    4574                        Runtime r = Runtime.getRuntime(); 
     
    71100                } 
    72101        } 
     102 
     103        /** 
     104         * Texy! syntaxe je experimentální a oficiálně nepodporovaná. 
     105         * 
     106         * TODO: až bude balíček texy pro GNU/Linuxové distribuce: 
     107         * http://forum.texy.info/cs/873-balicek-pro-linuxove-distribuce 
     108         * řešit stejně jako Markdown. 
     109         */ 
     110        private static String formátujTexy(String wiki) throws IOException { 
     111                System.out.println("Pozor: Texy! wiki syntaxe je experimentální a oficiálně nepodporovaná."); 
     112                System.out.println("Pozor: používáte na vlastní nebezpečí!"); 
     113                System.out.println("Pozor: text k interpretování bude odeslán na vzdálené URL: " + URL_TEXY); 
     114                System.out.println("Pokračovat? [a/N]"); 
     115                int pokračovat = System.in.read(); 
     116 
     117                if (pokračovat == 'a') { 
     118                        OutputStreamWriter požadavek = null; 
     119                        BufferedReader odpověď = null; 
     120                        final String kódování = "UTF-8"; 
     121                        try { 
     122                                URL url = new URL(URL_TEXY); 
     123                                URLConnection spojeni = url.openConnection(); 
     124                                spojeni.setDoOutput(true); 
     125 
     126                                /** Odešleme data */ 
     127                                požadavek = new OutputStreamWriter(spojeni.getOutputStream()); 
     128                                požadavek.write(URLEncoder.encode(wiki, kódování)); 
     129                                požadavek.flush(); 
     130 
     131                                /** Přijmeme odpověď */ 
     132                                odpověď = new BufferedReader(new InputStreamReader(spojeni.getInputStream(), kódování)); 
     133                                StringBuilder vysledek = new StringBuilder(); 
     134                                String radka; 
     135                                while ((radka = odpověď.readLine()) != null) { 
     136                                        vysledek.append(radka); 
     137                                        vysledek.append("\n"); 
     138                                } 
     139 
     140                                return vysledek.toString(); 
     141                        } catch (Exception e) { 
     142                                throw new RuntimeException("Chyba při zpracovávání Texy! syntaxe: " + wiki, e); 
     143                        } finally { 
     144                                try { 
     145                                        požadavek.close(); 
     146                                } catch (IOException e) { 
     147                                        e.printStackTrace(System.err); 
     148                                } 
     149                                try { 
     150                                        odpověď.close(); 
     151                                } catch (IOException e) { 
     152                                        e.printStackTrace(System.err); 
     153                                } 
     154                        } 
     155                } else { 
     156                        String hláška = "Texy! wiki syntaxe nebyla interpretována. Zdrojový text nebyl nikam odeslán."; 
     157                        System.out.println(hláška); 
     158                        return "<!-- " + hláška + " -->"; 
     159                } 
     160        } 
    73161} 
    74