summaryrefslogtreecommitdiff
path: root/inc/parser
diff options
context:
space:
mode:
Diffstat (limited to 'inc/parser')
-rw-r--r--inc/parser/handler.php25
-rw-r--r--inc/parser/renderer.php5
2 files changed, 20 insertions, 10 deletions
diff --git a/inc/parser/handler.php b/inc/parser/handler.php
index 0b8b79254..a96e6b9db 100644
--- a/inc/parser/handler.php
+++ b/inc/parser/handler.php
@@ -440,7 +440,7 @@ class Doku_Handler {
array($link[0],$link[1],strtolower($interwiki[0]),$interwiki[1]),
$pos
);
- }elseif ( preg_match('/^\\\\\\\\[\w.:?\-;,]+?\\\\/u',$link[0]) ) {
+ }elseif ( preg_match('/^\\\\\\\\[^\\\\]+?\\\\/u',$link[0]) ) {
// Windows Share
$this->_addCall(
'windowssharelink',
@@ -1543,14 +1543,12 @@ class Doku_Handler_Block {
// Process blocks which are stack like... (contain linefeeds)
if ( in_array($cname,$this->stackOpen ) && (!$plugin || $plugin_open) ) {
- $this->calls[] = $call;
-
// Hack - footnotes shouldn't immediately contain a p_open
- if ( $cname != 'footnote_open' ) {
- $this->addToStack();
- } else {
- $this->addToStack(false);
+ if ($this->addToStack($cname != 'footnote_open')) {
+ $this->closeParagraph($call[2]);
}
+ $this->calls[] = $call;
+
continue;
}
@@ -1560,7 +1558,9 @@ class Doku_Handler_Block {
$this->closeParagraph($call[2]);
}
$this->calls[] = $call;
- $this->removeFromStack();
+ if ($this->removeFromStack()) {
+ $this->calls[] = array('p_open',array(), $call[2]);
+ }
continue;
}
@@ -1676,16 +1676,25 @@ class Doku_Handler_Block {
return $this->calls;
}
+ /**
+ *
+ * @return bool true when a p_close() is required
+ */
function addToStack($newStart = true) {
+ $ret = $this->inParagraph;
$this->blockStack[] = array($this->atStart, $this->inParagraph);
$this->atStart = $newStart;
$this->inParagraph = false;
+
+ return $ret;
}
function removeFromStack() {
$state = array_pop($this->blockStack);
$this->atStart = $state[0];
$this->inParagraph = $state[1];
+
+ return $this->inParagraph;
}
function addCall($call) {
diff --git a/inc/parser/renderer.php b/inc/parser/renderer.php
index 7e52cfce2..b54ccf050 100644
--- a/inc/parser/renderer.php
+++ b/inc/parser/renderer.php
@@ -6,7 +6,6 @@
* @author Andreas Gohr <andi@splitbrain.org>
*/
if(!defined('DOKU_INC')) die('meh.');
-require_once DOKU_INC . 'inc/parser/renderer.php';
require_once DOKU_INC . 'inc/plugin.php';
require_once DOKU_INC . 'inc/pluginutils.php';
@@ -75,7 +74,9 @@ class Doku_Renderer extends DokuWiki_Plugin {
foreach ( $instructions as $instruction ) {
// execute the callback against ourself
- call_user_func_array(array(&$this, $instruction[0]),$instruction[1]);
+ if (method_exists($this,$instruction[0])) {
+ call_user_func_array(array($this, $instruction[0]),$instruction[1]);
+ }
}
}