mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-12-22 16:31:53 +00:00
Define AttrDef_Text and parseCDATA().
git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@160 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
parent
50b3d5320e
commit
6232221c08
@ -8,6 +8,13 @@ class HTMLPurifier_AttrDef
|
||||
function validate() {
|
||||
trigger_error('Cannot call abstract function', E_USER_ERROR);
|
||||
}
|
||||
|
||||
function parseCDATA($string) {
|
||||
$string = trim($string);
|
||||
$string = str_replace("\n", '', $string);
|
||||
$string = str_replace(array("\r", "\t"), ' ', $string);
|
||||
return $string;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
15
library/HTMLPurifier/AttrDef/Text.php
Normal file
15
library/HTMLPurifier/AttrDef/Text.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
require_once 'HTMLPurifier/AttrDef.php';
|
||||
|
||||
class HTMLPurifier_AttrDef_Text extends HTMLPurifier_AttrDef
|
||||
{
|
||||
|
||||
function validate($string) {
|
||||
$new_string = $this->parseCDATA($string);
|
||||
return ($string == $new_string) ? true : $new_string;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
@ -3,6 +3,8 @@
|
||||
require_once 'HTMLPurifier/AttrDef.php';
|
||||
require_once 'HTMLPurifier/AttrDef/Enum.php';
|
||||
require_once 'HTMLPurifier/AttrDef/ID.php';
|
||||
require_once 'HTMLPurifier/AttrDef/Class.php';
|
||||
require_once 'HTMLPurifier/AttrDef/Text.php';
|
||||
require_once 'HTMLPurifier/ChildDef.php';
|
||||
require_once 'HTMLPurifier/Generator.php';
|
||||
require_once 'HTMLPurifier/Token.php';
|
||||
@ -238,6 +240,7 @@ class HTMLPurifier_Definition
|
||||
// core attrs
|
||||
'id' => new HTMLPurifier_AttrDef_ID(),
|
||||
'class' => new HTMLPurifier_AttrDef_Class(),
|
||||
'title' => new HTMLPurifier_AttrDef_Text(),
|
||||
// i18n
|
||||
'dir' => new HTMLPurifier_AttrDef_Enum(array('ltr','rtl'), false),
|
||||
);
|
||||
|
20
tests/HTMLPurifier/AttrDef/TextTest.php
Normal file
20
tests/HTMLPurifier/AttrDef/TextTest.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
require_once 'HTMLPurifier/AttrDef/Text.php';
|
||||
|
||||
class HTMLPurifier_AttrDef_TextTest extends UnitTestCase
|
||||
{
|
||||
|
||||
function test() {
|
||||
|
||||
$def = new HTMLPurifier_AttrDef_Text();
|
||||
|
||||
$this->assertTrue($def->validate('This is spiffy text!'));
|
||||
$this->assertEqual('Casual CDATA parsecheck.',
|
||||
$def->validate(" Casual\tCDATA parse\ncheck. "));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
22
tests/HTMLPurifier/AttrDefTest.php
Normal file
22
tests/HTMLPurifier/AttrDefTest.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
require_once 'HTMLPurifier/AttrDef.php';
|
||||
|
||||
class HTMLPurifier_AttrDefTest extends UnitTestCase
|
||||
{
|
||||
|
||||
function test_parseCDATA() {
|
||||
|
||||
$def = new HTMLPurifier_AttrDef();
|
||||
|
||||
$this->assertEqual('', $def->parseCDATA(''));
|
||||
$this->assertEqual('', $def->parseCDATA("\t\n\r \t\t"));
|
||||
$this->assertEqual('foo', $def->parseCDATA("\t\n\r foo\t\t"));
|
||||
$this->assertEqual('ignorelinefeeds', $def->parseCDATA("ignore\nline\nfeeds"));
|
||||
$this->assertEqual('translate to space', $def->parseCDATA("translate\rto\tspace"));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
@ -52,6 +52,13 @@ class HTMLPurifier_Strategy_ValidateAttributesTest extends
|
||||
$inputs[8] = '<div class="valid">Valid</div>';
|
||||
$expect[8] = $inputs[8];
|
||||
|
||||
$inputs[9] = '<div class="valid 0invalid">Keep valid.</div>';
|
||||
$expect[9] = '<div class="valid">Keep valid.</div>';
|
||||
|
||||
// test title
|
||||
$inputs[10] = '<acronym title="PHP: Hypertext Preprocessor">PHP</acronym>';
|
||||
$expect[10] = $inputs[10];
|
||||
|
||||
$this->assertStrategyWorks($strategy, $inputs, $expect, $config);
|
||||
|
||||
}
|
||||
|
@ -37,9 +37,11 @@ $test->addTestFile('HTMLPurifier/Strategy/FixNestingTest.php');
|
||||
$test->addTestFile('HTMLPurifier/Strategy/CompositeTest.php');
|
||||
$test->addTestFile('HTMLPurifier/Strategy/CoreTest.php');
|
||||
$test->addTestFile('HTMLPurifier/Strategy/ValidateAttributesTest.php');
|
||||
$test->addTestFile('HTMLPurifier/AttrDefTest.php');
|
||||
$test->addTestFile('HTMLPurifier/AttrDef/EnumTest.php');
|
||||
$test->addTestFile('HTMLPurifier/AttrDef/IDTest.php');
|
||||
$test->addTestFile('HTMLPurifier/AttrDef/ClassTest.php');
|
||||
$test->addTestFile('HTMLPurifier/AttrDef/TextTest.php');
|
||||
$test->addTestFile('HTMLPurifier/IDAccumulatorTest.php');
|
||||
$test->addTestFile('HTMLPurifier/TagTransformTest.php');
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user