Adds tables in MiniWiki (Closes #773).
[platal.git] / classes / miniwiki.php
index e81d9b7..d33fc05 100644 (file)
@@ -32,6 +32,14 @@ class MiniWiki
         // retours à la ligne avec \\
         MiniWiki::Markup("/\\\\(?".">(\\\\*))\n/e", "str_repeat('<br />\n',mb_strlen('$1'))", "str_repeat('\n',mb_strlen('$1'))", "ligne1\\\\\nligne2");
 
+        // || Tables
+        MiniWiki::Markup("/((^|\n)\|\|(([^\n]*(\n|$))(\|\|[^\n]*(\n|$))*))/se",
+                         "'</p><table class=\"tinybicol\">'
+                         . str_replace(\"\n\", '', str_replace('||', '</td><td>', preg_replace(\"/\|\|($|\\n)/\", '</td></tr>\n', preg_replace(\"/(^|\\n)\|\|/\", '\n<tr><td>', '$1'))))
+                         . '</table><p>'",
+                         "str_replace('||', '|', '$1')",
+                         "||ligne1 colonne1||ligne1 colonne2||\n||ligne2 colonne1||ligne2 colonne2||");
+
         // * unordered list
         MiniWiki::Markup("/(^|\n)\*(([^\n]*(\n|$))(\*[^\n]*(\n|$))*)/se",
                          "'</p><ul><li>'.str_replace(\"\\n*\",'</li><li>','$2').'</li></ul><p>'",
@@ -73,10 +81,10 @@ class MiniWiki
         // links
         MiniWiki::Markup('/((?:https?|ftp):\/\/(?:[\.\,\;\!\:]*[\w@~%$£µ&i#\-+=_\/\?])*)/ui',
                          '<a href="\\0">\\0</a>', '<\\0>');
-        MiniWiki::Markup('/(\s|^|\\[\\[)www\.((?:[\.\,\;\!\:]*[\w@~%$£µ&i#\-+=_\/\?])*)/iu',
+        MiniWiki::Markup('/(\s|^|\[\[)www\.((?:[\.\,\;\!\:]*[\w@~%$£µ&i#\-+=_\/\?])*)/iu',
                          '\\1<a href="http://www.\\2">www.\\2</a>', '\\1<http://www.\\2>');
         MiniWiki::Markup('/(?:mailto:)?([a-z0-9.\-+_]+@([\-.+_]?[a-z0-9])+)/i', '<a href="mailto:\\0">\\0</a>', '<\\0>');
-        MiniWiki::Markup('/\\[\\[\\s*<(?:a href=")?([^>]*)(?:">.*<\/a)?>\\s*\|([^\\]]+)\\]\\]/i',
+        MiniWiki::Markup('/\[\[\s*<(?:a href=")?([^">]*?)(?:">.*?<\/a)?>\s*\|([^\]]+)\]\]/i',
                          '<a href="\\1">\\2</a>', '\\2 <\\1>',
                          "[[http://www.example.com|Mon site web]]\n\nhttp://www.example.com\n\ntest@example.com");
 
@@ -84,6 +92,9 @@ class MiniWiki
         MiniWiki::Markup("/\n\n/", '</p><p>', "\n\n", "paragraphe1\n\nparagraphe2");
         MiniWiki::Markup("/\n/", ' ', "\n");
         MiniWiki::Markup("/^.*<\/p>.*<p>.*$/s", "<p>$0</p>", "$0");
+
+        // french typo rules, unbreakable spaces
+        MiniWiki::Markup("/ +([!?:;])/", "&nbsp;$1", "$0");
     }
 
     public static function WikiToHTML($wiki, $title = false)