0
0
mirror of https://github.com/ezyang/htmlpurifier.git synced 2024-11-09 23:28:42 +00:00

Add configuration as a parameter to all AttrDef objects. If we get another construction like accumulator, however, we'll have to create an AttrContext object.

git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@156 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
Edward Z. Yang 2006-08-04 01:52:54 +00:00
parent a0ee772423
commit 784b756b3f
3 changed files with 21 additions and 13 deletions

View File

@ -6,7 +6,7 @@ require_once 'HTMLPurifier/IDAccumulator.php';
class HTMLPurifier_AttrDef_ID extends HTMLPurifier_AttrDef
{
function validate($old_id, &$accumulator) {
function validate($old_id, $config, &$accumulator) {
$id = trim($old_id); // trim it first

View File

@ -34,17 +34,21 @@ class HTMLPurifier_Strategy_ValidateAttributes extends HTMLPurifier_Strategy
$attr = $token->attributes;
$changed = false;
foreach ($attr as $attr_key => $value) {
// call the definition
if ( isset($defs[$attr_key]) ) {
if (!$defs[$attr_key]) {
$result = false;
} else {
$result = $defs[$attr_key]->validate($value, $accumulator);
$result = $defs[$attr_key]->validate($value, $config, $accumulator);
}
} elseif ( isset($d_defs[$attr_key]) ) {
$result = $d_defs[$attr_key]->validate($value, $accumulator);
$result = $d_defs[$attr_key]->validate($value, $config, $accumulator);
} else {
$result = false;
}
// put the results into effect
if ($result === false) {
$changed = true;
unset($attr[$attr_key]);

View File

@ -2,6 +2,7 @@
require_once 'HTMLPurifier/AttrDef/ID.php';
require_once 'HTMLPurifier/IDAccumulator.php';
require_once 'HTMLPurifier/Config.php';
class HTMLPurifier_AttrDef_IDTest extends UnitTestCase
{
@ -9,25 +10,28 @@ class HTMLPurifier_AttrDef_IDTest extends UnitTestCase
function test() {
$acc = new HTMLPurifier_IDAccumulator();
$def = new HTMLPurifier_AttrDef_ID();
generate_mock_once('HTMLPurifier_Config');
$config = new HTMLPurifier_ConfigMock();
// valid ID names
$this->assertTrue($def->validate('alpha', $acc));
$this->assertTrue($def->validate('al_ha', $acc));
$this->assertTrue($def->validate('a0-:.', $acc));
$this->assertTrue($def->validate('a' , $acc));
$this->assertTrue($def->validate('alpha', $config, $acc));
$this->assertTrue($def->validate('al_ha', $config, $acc));
$this->assertTrue($def->validate('a0-:.', $config, $acc));
$this->assertTrue($def->validate('a' , $config, $acc));
// invalid ID names
$this->assertFalse($def->validate('<asa', $acc));
$this->assertFalse($def->validate('0123', $acc));
$this->assertFalse($def->validate('.asa', $acc));
$this->assertFalse($def->validate('<asa', $config, $acc));
$this->assertFalse($def->validate('0123', $config, $acc));
$this->assertFalse($def->validate('.asa', $config, $acc));
// test duplicate detection
$this->assertFalse($def->validate('a' , $acc));
$this->assertFalse($def->validate('a' , $config, $acc));
// valid once whitespace stripped, but needs to be amended
$this->assertEqual('whee', $def->validate(' whee ', $acc));
$this->assertEqual('whee', $def->validate(' whee ', $config, $acc));
}