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

recognize smileys with proper boundaries only FS#1489

darcs-hash:20081011184717-7ad00-0f910f4d061e00ccfdf722a3f971656da1b7979b.gz
parent e8f8d645
No related branches found
No related tags found
No related merge requests found
......@@ -59,18 +59,32 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
//
function testSingleSmiley() {
function testSingleSmileyFail() {
$this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-)')));
$this->P->parse('abc:-)xyz');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'abc')),
array('cdata',array("\nabc:-)xyz\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testSingleSmiley() {
$this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-)')));
$this->P->parse('abc :-) xyz');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'abc ')),
array('smiley',array(':-)')),
array('cdata',array('xyz'."\n")),
array('cdata',array(' xyz'."\n")),
array('p_close',array()),
array('document_end',array()),
);
......@@ -78,37 +92,67 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testMultipleSmileys() {
function testMultipleSmileysFail() {
$this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-)','^_^')));
$this->P->parse('abc:-)x^_^yz');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'abc')),
array('cdata',array("\nabc:-)x^_^yz\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testMultipleSmileys() {
$this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-)','^_^')));
$this->P->parse('abc :-) x ^_^ yz');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'abc ')),
array('smiley',array(':-)')),
array('cdata',array('x')),
array('cdata',array(' x ')),
array('smiley',array('^_^')),
array('cdata',array('yz'."\n")),
array('cdata',array(' yz'."\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testBackslashSmileyFail() {
// This smiley is really :-\\ but escaping makes like interesting
$this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-\\\\')));
$this->P->parse('abc:-\\\xyz');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\nabc".':-\\\\'."xyz\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testBackslashSmiley() {
// This smiley is really :-\\ but escaping makes like interesting
$this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-\\\\')));
$this->P->parse('abc:-\\\xyz');
$this->P->parse('abc :-\\\ xyz');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'abc')),
array('cdata',array("\n".'abc ')),
array('smiley',array(':-\\\\')),
array('cdata',array('xyz'."\n")),
array('cdata',array(' xyz'."\n")),
array('p_close',array()),
array('document_end',array()),
);
......
......@@ -652,7 +652,7 @@ class Doku_Parser_Mode_smiley extends Doku_Parser_Mode {
$sep = '';
foreach ( $this->smileys as $smiley ) {
$this->pattern .= $sep.Doku_Lexer_Escape($smiley);
$this->pattern .= $sep.'(?<=\W)'.Doku_Lexer_Escape($smiley).'(?=\W)';
$sep = '|';
}
}
......
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