author | Dan |
Sun, 28 Mar 2010 21:49:26 -0400 | |
changeset 1226 | de56132c008d |
parent 1081 | 745200a9cc2a |
child 1227 | bdac73ed481e |
permissions | -rw-r--r-- |
1 | 1 |
<?php |
2 |
||
166
d53cc29308f4
Rebrand as 1.1.1; everything should now be bumped to "unstable" status
Dan
parents:
163
diff
changeset
|
3 |
/* |
1 | 4 |
* Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between |
1081
745200a9cc2a
Fixed some upgrade bugs; added support for choosing one's own date/time formats; rebrand as 1.1.7
Dan
parents:
1073
diff
changeset
|
5 |
* Copyright (C) 2006-2009 Dan Fuhry |
1 | 6 |
* |
7 |
* This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License |
|
8 |
* as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. |
|
9 |
* |
|
10 |
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied |
|
11 |
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. |
|
12 |
* |
|
13 |
* This script contains code originally found in MediaWiki (http://www.mediawiki.org). MediaWiki is also licensed under |
|
1027
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
14 |
* the GPLv2 or later; see the file GPL included with this package for details. |
1 | 15 |
* |
16 |
* We're using the MW parser because the Text_Wiki version simply refused to work under PHP 5.2.0. Porting this was |
|
17 |
* _not_ easy. <leaves to get cup of coffee> |
|
18 |
*/ |
|
19 |
||
1027
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
20 |
global $mStripState, $wgRandomKey; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
21 |
$mStripState = Array(); |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
22 |
|
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
23 |
/** |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
24 |
* emulate mediawiki parser, including stripping, etc. |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
25 |
* |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
26 |
* @param string $text the text to parse |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
27 |
* @return string |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
28 |
* @access public |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
29 |
*/ |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
30 |
|
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
31 |
function process_tables( $text ) |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
32 |
{ |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
33 |
// include some globals, do some parser stuff that would normally be done in the parent parser function |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
34 |
global $mStripState; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
35 |
$x =& $mStripState; |
1 | 36 |
|
1027
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
37 |
// parse the text |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
38 |
$text = doTableStuff($text); |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
39 |
|
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
40 |
return $text; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
41 |
} |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
42 |
|
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
43 |
/** |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
44 |
* parse the wiki syntax used to render tables |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
45 |
* |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
46 |
* @param string $t the text to parse |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
47 |
* @return string |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
48 |
* @access private |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
49 |
*/ |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
50 |
function doTableStuff( $t ) { |
1 | 51 |
|
1027
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
52 |
$t = explode ( "\n" , $t ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
53 |
$td = array () ; # Is currently a td tag open? |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
54 |
$ltd = array () ; # Was it TD or TH? |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
55 |
$tr = array () ; # Is currently a tr tag open? |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
56 |
$ltr = array () ; # tr attributes |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
57 |
$has_opened_tr = array(); # Did this table open a <tr> element? |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
58 |
$indent_level = 0; # indent level of the table |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
59 |
foreach ( $t AS $k => $x ) |
1 | 60 |
{ |
1027
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
61 |
$x = trim ( $x ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
62 |
$fc = substr ( $x , 0 , 1 ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
63 |
if ( preg_match( '/^(:*)\{\|(.*)$/', $x, $matches ) ) { |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
64 |
$indent_level = strlen( $matches[1] ); |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
65 |
|
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
66 |
$attributes = unstripForHTML( $matches[2] ); |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
67 |
|
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
68 |
$t[$k] = str_repeat( '<dl><dd>', $indent_level ) . |
1073
b19a9bcb6a45
More work on rendering engine. Fixed some bugs with paragraph skipping and added (incomplete) support for blockquotes.
Dan
parents:
1027
diff
changeset
|
69 |
'<table' . fixTagAttributes( $attributes, 'table' ) . '>' ; |
1027
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
70 |
array_push ( $td , false ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
71 |
array_push ( $ltd , '' ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
72 |
array_push ( $tr , false ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
73 |
array_push ( $ltr , '' ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
74 |
array_push ( $has_opened_tr, false ); |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
75 |
} |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
76 |
else if ( count ( $td ) == 0 ) { } # Don't do any of the following |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
77 |
else if ( '|}' == substr ( $x , 0 , 2 ) ) { |
1073
b19a9bcb6a45
More work on rendering engine. Fixed some bugs with paragraph skipping and added (incomplete) support for blockquotes.
Dan
parents:
1027
diff
changeset
|
78 |
$z = "</table>" . substr ( $x , 2); |
1027
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
79 |
$l = array_pop ( $ltd ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
80 |
if ( !array_pop ( $has_opened_tr ) ) $z = "<tr><td></td></tr>" . $z ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
81 |
if ( array_pop ( $tr ) ) $z = '</tr>' . $z ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
82 |
if ( array_pop ( $td ) ) $z = '</'.$l.'>' . $z ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
83 |
array_pop ( $ltr ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
84 |
$t[$k] = $z . str_repeat( '</dd></dl>', $indent_level ); |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
85 |
} |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
86 |
else if ( '|-' == substr ( $x , 0 , 2 ) ) { # Allows for |--------------- |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
87 |
$x = substr ( $x , 1 ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
88 |
while ( $x != '' && substr ( $x , 0 , 1 ) == '-' ) $x = substr ( $x , 1 ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
89 |
$z = '' ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
90 |
$l = array_pop ( $ltd ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
91 |
array_pop ( $has_opened_tr ); |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
92 |
array_push ( $has_opened_tr , true ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
93 |
if ( array_pop ( $tr ) ) $z = '</tr>' . $z ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
94 |
if ( array_pop ( $td ) ) $z = '</'.$l.'>' . $z ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
95 |
array_pop ( $ltr ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
96 |
$t[$k] = $z ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
97 |
array_push ( $tr , false ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
98 |
array_push ( $td , false ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
99 |
array_push ( $ltd , '' ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
100 |
$attributes = unstripForHTML( $x ); |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
101 |
array_push ( $ltr , fixTagAttributes( $attributes, 'tr' ) ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
102 |
} |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
103 |
else if ( '|' == $fc || '!' == $fc || '|+' == substr ( $x , 0 , 2 ) ) { # Caption |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
104 |
# $x is a table row |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
105 |
if ( '|+' == substr ( $x , 0 , 2 ) ) { |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
106 |
$fc = '+' ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
107 |
$x = substr ( $x , 1 ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
108 |
} |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
109 |
$after = substr ( $x , 1 ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
110 |
if ( $fc == '!' ) $after = str_replace ( '!!' , '||' , $after ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
111 |
|
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
112 |
// Split up multiple cells on the same line. |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
113 |
// FIXME: This can result in improper nesting of tags processed |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
114 |
// by earlier parser steps, but should avoid splitting up eg |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
115 |
// attribute values containing literal "||". |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
116 |
$after = wfExplodeMarkup( '||', $after ); |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
117 |
|
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
118 |
$t[$k] = '' ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
119 |
|
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
120 |
# Loop through each table cell |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
121 |
foreach ( $after AS $theline ) |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
122 |
{ |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
123 |
$z = '' ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
124 |
if ( $fc != '+' ) |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
125 |
{ |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
126 |
$tra = array_pop ( $ltr ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
127 |
if ( !array_pop ( $tr ) ) $z = '<tr'.$tra.">\n" ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
128 |
array_push ( $tr , true ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
129 |
array_push ( $ltr , '' ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
130 |
array_pop ( $has_opened_tr ); |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
131 |
array_push ( $has_opened_tr , true ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
132 |
} |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
133 |
|
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
134 |
$l = array_pop ( $ltd ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
135 |
if ( array_pop ( $td ) ) $z = '</'.$l.'>' . $z ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
136 |
if ( $fc == '|' ) $l = 'td' ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
137 |
else if ( $fc == '!' ) $l = 'th' ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
138 |
else if ( $fc == '+' ) $l = 'caption' ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
139 |
else $l = '' ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
140 |
array_push ( $ltd , $l ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
141 |
|
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
142 |
# Cell parameters |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
143 |
$y = explode ( '|' , $theline , 2 ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
144 |
# Note that a '|' inside an invalid link should not |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
145 |
# be mistaken as delimiting cell parameters |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
146 |
if ( strpos( $y[0], '[[' ) !== false ) { |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
147 |
$y = array ($theline); |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
148 |
} |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
149 |
if ( count ( $y ) == 1 ) |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
150 |
$y = "{$z}<{$l}>{$y[0]}" ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
151 |
else { |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
152 |
$attributes = unstripForHTML( $y[0] ); |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
153 |
$y = "{$z}<{$l}".fixTagAttributes($attributes, $l).">{$y[1]}" ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
154 |
} |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
155 |
$t[$k] .= $y ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
156 |
array_push ( $td , true ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
157 |
} |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
158 |
} |
1 | 159 |
} |
160 |
||
1027
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
161 |
# Closing open td, tr && table |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
162 |
while ( count ( $td ) > 0 ) |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
163 |
{ |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
164 |
$l = array_pop ( $ltd ) ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
165 |
if ( array_pop ( $td ) ) $t[] = '</td>' ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
166 |
if ( array_pop ( $tr ) ) $t[] = '</tr>' ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
167 |
if ( !array_pop ( $has_opened_tr ) ) $t[] = "<tr><td></td></tr>" ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
168 |
$t[] = '</table></_paragraph_bypass>' ; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
169 |
} |
1 | 170 |
|
1027
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
171 |
$t = implode ( "\n" , $t ) ; |
1 | 172 |
|
1027
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
173 |
# special case: don't return empty table |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
174 |
if($t == "<table>\n<tr><td></td></tr>\n</table>") |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
175 |
$t = ''; |
98c052fc3337
First implementation of new parser; Text_Wiki is now gone. VERY BETA! WiP.
Dan
parents:
801
diff
changeset
|
176 |
return $t ; |
1 | 177 |
} |
178 |