Skip to content
Snippets Groups Projects
Commit c99d7c88 authored by Andreas Gohr's avatar Andreas Gohr Committed by GitHub
Browse files

Merge pull request #1988 from LarsGit223/issue936

Corrected external link syntax, now requires preceding whitespace.
parents a69722b3 5e964d2b
No related branches found
No related tags found
No related merge requests found
......@@ -144,6 +144,35 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
$this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
}
function testExternalWWWLinkInPath() {
$this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink());
// See issue #936. Should NOT generate a link!
$this->P->parse("Foo /home/subdir/www/www.something.de/somedir/ Bar");
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'Foo /home/subdir/www/www.something.de/somedir/ Bar')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
}
function testExternalWWWLinkFollowingPath() {
$this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink());
$this->P->parse("Foo /home/subdir/www/ www.something.de/somedir/ Bar");
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'Foo /home/subdir/www/ ')),
array('externallink',array('http://www.something.de/somedir/', 'www.something.de/somedir/')),
array('cdata',array(' Bar')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
}
function testExternalFTPLink() {
$this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink());
$this->P->parse("Foo ftp.sunsite.com Bar");
......@@ -158,6 +187,36 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
);
$this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
}
function testExternalFTPLinkInPath() {
$this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink());
// See issue #936. Should NOT generate a link!
$this->P->parse("Foo /home/subdir/www/ftp.something.de/somedir/ Bar");
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'Foo /home/subdir/www/ftp.something.de/somedir/ Bar')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
}
function testExternalFTPLinkFollowingPath() {
$this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink());
$this->P->parse("Foo /home/subdir/www/ ftp.something.de/somedir/ Bar");
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'Foo /home/subdir/www/ ')),
array('externallink',array('ftp://ftp.something.de/somedir/', 'ftp.something.de/somedir/')),
array('cdata',array(' Bar')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
}
function testEmail() {
$this->P->addMode('emaillink',new Doku_Parser_Mode_Emaillink());
$this->P->parse("Foo <bugs@php.net> Bar");
......
......@@ -955,8 +955,8 @@ class Doku_Parser_Mode_externallink extends Doku_Parser_Mode {
$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[] = '(?<=\s)(?i)www?(?-i)\.['.$host.']+?\.['.$host.']+?['.$any.']+?(?=['.$punc.']*[^'.$any.'])';
$this->patterns[] = '(?<=\s)(?i)ftp?(?-i)\.['.$host.']+?\.['.$host.']+?['.$any.']+?(?=['.$punc.']*[^'.$any.'])';
}
function connectTo($mode) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment