summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inc/parser/lexer.php2
-rw-r--r--inc/parser/parser.php12
-rw-r--r--inc/parser/xhtml.php4
3 files changed, 11 insertions, 7 deletions
diff --git a/inc/parser/lexer.php b/inc/parser/lexer.php
index 828d57bdf..e7961932d 100644
--- a/inc/parser/lexer.php
+++ b/inc/parser/lexer.php
@@ -31,7 +31,7 @@ define("DOKU_LEXER_SPECIAL", 5);
* when one does it's label is returned.
* @package Doku
* @subpackage Lexer
- */
+ */
class Doku_LexerParallelRegex {
var $_patterns;
var $_labels;
diff --git a/inc/parser/parser.php b/inc/parser/parser.php
index d66ed5cca..7e60628fe 100644
--- a/inc/parser/parser.php
+++ b/inc/parser/parser.php
@@ -169,7 +169,7 @@ class Doku_Parser_Mode_Header extends Doku_Parser_Mode {
// Header 1 is special case - match 6 or more
$this->Lexer->addSpecialPattern(
- '[ \t]*={6,}[^\n]+={2,}[ \t]*\n',
+ '[ \t]*={6,}[^\n]+={2,}[ \t]*(?=\n)',
'base',
'header'
);
@@ -177,7 +177,7 @@ class Doku_Parser_Mode_Header extends Doku_Parser_Mode {
// For the rest, match exactly
for ( $i = 5; $i > 1; $i--) {
$this->Lexer->addSpecialPattern(
- '[ \t]*={'.$i.'}[^\n]+={2,}[ \t]*\n',
+ '[ \t]*={'.$i.'}[^\n]+={2,}[ \t]*(?=\n)',
'base',
'header'
);
@@ -219,7 +219,7 @@ class Doku_Parser_Mode_Eol extends Doku_Parser_Mode {
class Doku_Parser_Mode_HR extends Doku_Parser_Mode {
function connectTo($mode) {
- $this->Lexer->addSpecialPattern('\n[ \t]*-{4,}[ \t]*\n',$mode,'hr');
+ $this->Lexer->addSpecialPattern('\n[ \t]*-{4,}[ \t]*(?=\n)',$mode,'hr');
}
}
@@ -683,11 +683,11 @@ class Doku_Parser_Mode_ExternalLink extends Doku_Parser_Mode {
$any = $ltrs.$gunk.$punc;
foreach ( $this->schemes as $scheme ) {
- $this->patterns[] = '\b(?i)'.$scheme.'(?-i)://['.$any.']+?['.$punc.']*[^'.$any.']';
+ $this->patterns[] = '\b(?i)'.$scheme.'(?-i)://['.$any.']+?(?=['.$punc.']*[^'.$any.'])';
}
- $this->patterns[] = '\b(?i)www?(?-i)\.['.$host.']+?\.['.$host.']+?['.$any.']+?['.$punc.']*[^'.$any.']';
- $this->patterns[] = '\b(?i)ftp?(?-i)\.['.$host.']+?\.['.$host.']+?['.$any.']+?['.$punc.']*[^'.$any.']';
+ $this->patterns[] = '\b(?i)www?(?-i)\.['.$host.']+?\.['.$host.']+?['.$any.']+?(?=['.$punc.']*[^'.$any.'])';
+ $this->patterns[] = '\b(?i)ftp?(?-i)\.['.$host.']+?\.['.$host.']+?['.$any.']+?(?=['.$punc.']*[^'.$any.'])';
}
diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php
index 1e520852e..8f414c2d6 100644
--- a/inc/parser/xhtml.php
+++ b/inc/parser/xhtml.php
@@ -456,6 +456,10 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
global $conf;
$name = $this->_getLinkTitle($name, $url, $isImage);
+
+ // add protocol on simple short URLs
+ if(substr($url,0,3) == 'ftp') $url = 'ftp://'.$url;
+ if(substr($url,0,3) == 'www') $url = 'http://'.$url;
if ( !$isImage ) {
$class='urlextern';