mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-11-10 07:38:41 +00:00
Rename ConfigEntity to ConfigDef and factor into its own classes.
git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@726 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
parent
e2103ce0f2
commit
64ee756b7a
10
library/HTMLPurifier/ConfigDef.php
Normal file
10
library/HTMLPurifier/ConfigDef.php
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class for configuration entity
|
||||||
|
*/
|
||||||
|
class HTMLPurifier_ConfigDef {
|
||||||
|
var $class = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
74
library/HTMLPurifier/ConfigDef/Directive.php
Normal file
74
library/HTMLPurifier/ConfigDef/Directive.php
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once 'HTMLPurifier/ConfigDef.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Structure object containing definition of a directive.
|
||||||
|
* @note This structure does not contain default values
|
||||||
|
*/
|
||||||
|
class HTMLPurifier_ConfigDef_Directive extends HTMLPurifier_ConfigDef
|
||||||
|
{
|
||||||
|
|
||||||
|
var $class = 'directive';
|
||||||
|
|
||||||
|
function HTMLPurifier_ConfigDef_Directive(
|
||||||
|
$type = null,
|
||||||
|
$descriptions = null,
|
||||||
|
$allow_null = null,
|
||||||
|
$allowed = null,
|
||||||
|
$aliases = null
|
||||||
|
) {
|
||||||
|
if ( $type !== null) $this->type = $type;
|
||||||
|
if ($descriptions !== null) $this->descriptions = $descriptions;
|
||||||
|
if ( $allow_null !== null) $this->allow_null = $allow_null;
|
||||||
|
if ( $allowed !== null) $this->allowed = $allowed;
|
||||||
|
if ( $aliases !== null) $this->aliases = $aliases;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allowed type of the directive. Values are:
|
||||||
|
* - string
|
||||||
|
* - istring (case insensitive string)
|
||||||
|
* - int
|
||||||
|
* - float
|
||||||
|
* - bool
|
||||||
|
* - lookup (array of value => true)
|
||||||
|
* - list (regular numbered index array)
|
||||||
|
* - hash (array of key => value)
|
||||||
|
* - mixed (anything goes)
|
||||||
|
*/
|
||||||
|
var $type = 'mixed';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Plaintext descriptions of the configuration entity is. Organized by
|
||||||
|
* file and line number, so multiple descriptions are allowed.
|
||||||
|
*/
|
||||||
|
var $descriptions = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is null allowed? Has no effect for mixed type.
|
||||||
|
* @bool
|
||||||
|
*/
|
||||||
|
var $allow_null = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lookup table of allowed values of the element, bool true if all allowed.
|
||||||
|
*/
|
||||||
|
var $allowed = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hash of value aliases, i.e. values that are equivalent.
|
||||||
|
*/
|
||||||
|
var $aliases = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a description to the array
|
||||||
|
*/
|
||||||
|
function addDescription($file, $line, $description) {
|
||||||
|
if (!isset($this->descriptions[$file])) $this->descriptions[$file] = array();
|
||||||
|
$this->descriptions[$file][$line] = $description;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
27
library/HTMLPurifier/ConfigDef/DirectiveAlias.php
Normal file
27
library/HTMLPurifier/ConfigDef/DirectiveAlias.php
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once 'HTMLPurifier/ConfigDef.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Structure object describing a directive alias
|
||||||
|
*/
|
||||||
|
class HTMLPurifier_ConfigDef_DirectiveAlias extends HTMLPurifier_ConfigDef
|
||||||
|
{
|
||||||
|
var $class = 'alias';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Namespace being aliased to
|
||||||
|
*/
|
||||||
|
var $namespace;
|
||||||
|
/**
|
||||||
|
* Directive being aliased to
|
||||||
|
*/
|
||||||
|
var $name;
|
||||||
|
|
||||||
|
function HTMLPurifier_ConfigDef_DirectiveAlias($namespace, $name) {
|
||||||
|
$this->namespace = $namespace;
|
||||||
|
$this->name = $name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
23
library/HTMLPurifier/ConfigDef/Namespace.php
Normal file
23
library/HTMLPurifier/ConfigDef/Namespace.php
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once 'HTMLPurifier/ConfigDef.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Structure object describing of a namespace
|
||||||
|
*/
|
||||||
|
class HTMLPurifier_ConfigDef_Namespace extends HTMLPurifier_ConfigDef {
|
||||||
|
|
||||||
|
function HTMLPurifier_ConfigDef_Namespace($description = null) {
|
||||||
|
$this->description = $description;
|
||||||
|
}
|
||||||
|
|
||||||
|
var $class = 'namespace';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* String description of what kinds of directives go in this namespace.
|
||||||
|
*/
|
||||||
|
var $description;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
@ -1,6 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
require_once 'HTMLPurifier/Error.php';
|
require_once 'HTMLPurifier/Error.php';
|
||||||
|
require_once 'HTMLPurifier/ConfigDef.php';
|
||||||
|
require_once 'HTMLPurifier/ConfigDef/Namespace.php';
|
||||||
|
require_once 'HTMLPurifier/ConfigDef/Directive.php';
|
||||||
|
require_once 'HTMLPurifier/ConfigDef/DirectiveAlias.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration definition, defines directives and their defaults.
|
* Configuration definition, defines directives and their defaults.
|
||||||
@ -138,7 +142,7 @@ class HTMLPurifier_ConfigSchema {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$def->info[$namespace][$name] =
|
$def->info[$namespace][$name] =
|
||||||
new HTMLPurifier_ConfigEntity_Directive();
|
new HTMLPurifier_ConfigDef_Directive();
|
||||||
$def->info[$namespace][$name]->type = $type;
|
$def->info[$namespace][$name]->type = $type;
|
||||||
$def->info[$namespace][$name]->allow_null = $allow_null;
|
$def->info[$namespace][$name]->allow_null = $allow_null;
|
||||||
$def->defaults[$namespace][$name] = $default;
|
$def->defaults[$namespace][$name] = $default;
|
||||||
@ -172,7 +176,7 @@ class HTMLPurifier_ConfigSchema {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$def->info[$namespace] = array();
|
$def->info[$namespace] = array();
|
||||||
$def->info_namespace[$namespace] = new HTMLPurifier_ConfigEntity_Namespace();
|
$def->info_namespace[$namespace] = new HTMLPurifier_ConfigDef_Namespace();
|
||||||
$def->info_namespace[$namespace]->description = $description;
|
$def->info_namespace[$namespace]->description = $description;
|
||||||
$def->defaults[$namespace] = array();
|
$def->defaults[$namespace] = array();
|
||||||
}
|
}
|
||||||
@ -284,7 +288,7 @@ class HTMLPurifier_ConfigSchema {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$def->info[$namespace][$name] =
|
$def->info[$namespace][$name] =
|
||||||
new HTMLPurifier_ConfigEntity_DirectiveAlias(
|
new HTMLPurifier_ConfigDef_DirectiveAlias(
|
||||||
$new_namespace, $new_name);
|
$new_namespace, $new_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -379,120 +383,4 @@ class HTMLPurifier_ConfigSchema {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Base class for configuration entity
|
|
||||||
*/
|
|
||||||
class HTMLPurifier_ConfigEntity {
|
|
||||||
var $class = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Structure object describing of a namespace
|
|
||||||
*/
|
|
||||||
class HTMLPurifier_ConfigEntity_Namespace extends HTMLPurifier_ConfigEntity {
|
|
||||||
|
|
||||||
function HTMLPurifier_ConfigEntity_Namespace($description = null) {
|
|
||||||
$this->description = $description;
|
|
||||||
}
|
|
||||||
|
|
||||||
var $class = 'namespace';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* String description of what kinds of directives go in this namespace.
|
|
||||||
*/
|
|
||||||
var $description;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Structure object containing definition of a directive.
|
|
||||||
* @note This structure does not contain default values
|
|
||||||
*/
|
|
||||||
class HTMLPurifier_ConfigEntity_Directive extends HTMLPurifier_ConfigEntity
|
|
||||||
{
|
|
||||||
|
|
||||||
var $class = 'directive';
|
|
||||||
|
|
||||||
function HTMLPurifier_ConfigEntity_Directive(
|
|
||||||
$type = null,
|
|
||||||
$descriptions = null,
|
|
||||||
$allow_null = null,
|
|
||||||
$allowed = null,
|
|
||||||
$aliases = null
|
|
||||||
) {
|
|
||||||
if ( $type !== null) $this->type = $type;
|
|
||||||
if ($descriptions !== null) $this->descriptions = $descriptions;
|
|
||||||
if ( $allow_null !== null) $this->allow_null = $allow_null;
|
|
||||||
if ( $allowed !== null) $this->allowed = $allowed;
|
|
||||||
if ( $aliases !== null) $this->aliases = $aliases;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allowed type of the directive. Values are:
|
|
||||||
* - string
|
|
||||||
* - istring (case insensitive string)
|
|
||||||
* - int
|
|
||||||
* - float
|
|
||||||
* - bool
|
|
||||||
* - lookup (array of value => true)
|
|
||||||
* - list (regular numbered index array)
|
|
||||||
* - hash (array of key => value)
|
|
||||||
* - mixed (anything goes)
|
|
||||||
*/
|
|
||||||
var $type = 'mixed';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Plaintext descriptions of the configuration entity is. Organized by
|
|
||||||
* file and line number, so multiple descriptions are allowed.
|
|
||||||
*/
|
|
||||||
var $descriptions = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is null allowed? Has no effect for mixed type.
|
|
||||||
* @bool
|
|
||||||
*/
|
|
||||||
var $allow_null = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Lookup table of allowed values of the element, bool true if all allowed.
|
|
||||||
*/
|
|
||||||
var $allowed = true;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hash of value aliases, i.e. values that are equivalent.
|
|
||||||
*/
|
|
||||||
var $aliases = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds a description to the array
|
|
||||||
*/
|
|
||||||
function addDescription($file, $line, $description) {
|
|
||||||
if (!isset($this->descriptions[$file])) $this->descriptions[$file] = array();
|
|
||||||
$this->descriptions[$file][$line] = $description;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Structure object describing a directive alias
|
|
||||||
*/
|
|
||||||
class HTMLPurifier_ConfigEntity_DirectiveAlias extends HTMLPurifier_ConfigEntity
|
|
||||||
{
|
|
||||||
var $class = 'alias';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Namespace being aliased to
|
|
||||||
*/
|
|
||||||
var $namespace;
|
|
||||||
/**
|
|
||||||
* Directive being aliased to
|
|
||||||
*/
|
|
||||||
var $name;
|
|
||||||
|
|
||||||
function HTMLPurifier_ConfigEntity_DirectiveAlias($namespace, $name) {
|
|
||||||
$this->namespace = $namespace;
|
|
||||||
$this->name = $name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
@ -48,7 +48,7 @@ class HTMLPurifier_ConfigSchemaTest extends UnitTestCase
|
|||||||
CS::defineNamespace('http', $d = 'This is an internet protocol.');
|
CS::defineNamespace('http', $d = 'This is an internet protocol.');
|
||||||
|
|
||||||
$this->assertIdentical($this->our_copy->info_namespace, array(
|
$this->assertIdentical($this->our_copy->info_namespace, array(
|
||||||
'http' => new HTMLPurifier_ConfigEntity_Namespace($d)
|
'http' => new HTMLPurifier_ConfigDef_Namespace($d)
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->expectError('Cannot redefine namespace');
|
$this->expectError('Cannot redefine namespace');
|
||||||
@ -68,7 +68,7 @@ class HTMLPurifier_ConfigSchemaTest extends UnitTestCase
|
|||||||
|
|
||||||
$this->assertIdentical($this->our_copy->defaults['Car']['Seats'], 5);
|
$this->assertIdentical($this->our_copy->defaults['Car']['Seats'], 5);
|
||||||
$this->assertIdentical($this->our_copy->info['Car']['Seats'],
|
$this->assertIdentical($this->our_copy->info['Car']['Seats'],
|
||||||
new HTMLPurifier_ConfigEntity_Directive('int',
|
new HTMLPurifier_ConfigDef_Directive('int',
|
||||||
array($this->file => array($l => $d))
|
array($this->file => array($l => $d))
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -77,7 +77,7 @@ class HTMLPurifier_ConfigSchemaTest extends UnitTestCase
|
|||||||
|
|
||||||
$this->assertIdentical($this->our_copy->defaults['Car']['Age'], null);
|
$this->assertIdentical($this->our_copy->defaults['Car']['Age'], null);
|
||||||
$this->assertIdentical($this->our_copy->info['Car']['Age'],
|
$this->assertIdentical($this->our_copy->info['Car']['Age'],
|
||||||
new HTMLPurifier_ConfigEntity_Directive('int',
|
new HTMLPurifier_ConfigDef_Directive('int',
|
||||||
array($this->file => array($l => $d)), true
|
array($this->file => array($l => $d)), true
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -106,7 +106,7 @@ class HTMLPurifier_ConfigSchemaTest extends UnitTestCase
|
|||||||
|
|
||||||
$this->assertIdentical($this->our_copy->defaults['Cat']['Dead'], false);
|
$this->assertIdentical($this->our_copy->defaults['Cat']['Dead'], false);
|
||||||
$this->assertIdentical($this->our_copy->info['Cat']['Dead'],
|
$this->assertIdentical($this->our_copy->info['Cat']['Dead'],
|
||||||
new HTMLPurifier_ConfigEntity_Directive('bool',
|
new HTMLPurifier_ConfigDef_Directive('bool',
|
||||||
array($this->file => array($l1 => $d1, $l2 => $d2))
|
array($this->file => array($l1 => $d1, $l2 => $d2))
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -132,7 +132,7 @@ class HTMLPurifier_ConfigSchemaTest extends UnitTestCase
|
|||||||
|
|
||||||
$this->assertIdentical($this->our_copy->defaults['QuantumNumber']['Difficulty'], null);
|
$this->assertIdentical($this->our_copy->defaults['QuantumNumber']['Difficulty'], null);
|
||||||
$this->assertIdentical($this->our_copy->info['QuantumNumber']['Difficulty'],
|
$this->assertIdentical($this->our_copy->info['QuantumNumber']['Difficulty'],
|
||||||
new HTMLPurifier_ConfigEntity_Directive(
|
new HTMLPurifier_ConfigDef_Directive(
|
||||||
'string',
|
'string',
|
||||||
array($this->file => array($l => $d)),
|
array($this->file => array($l => $d)),
|
||||||
true,
|
true,
|
||||||
@ -184,7 +184,7 @@ class HTMLPurifier_ConfigSchemaTest extends UnitTestCase
|
|||||||
|
|
||||||
$this->assertIdentical($this->our_copy->defaults['Abbrev']['HTH'], 'Happy to Help');
|
$this->assertIdentical($this->our_copy->defaults['Abbrev']['HTH'], 'Happy to Help');
|
||||||
$this->assertIdentical($this->our_copy->info['Abbrev']['HTH'],
|
$this->assertIdentical($this->our_copy->info['Abbrev']['HTH'],
|
||||||
new HTMLPurifier_ConfigEntity_Directive(
|
new HTMLPurifier_ConfigDef_Directive(
|
||||||
'string',
|
'string',
|
||||||
array($this->file => array($l => $d)),
|
array($this->file => array($l => $d)),
|
||||||
false,
|
false,
|
||||||
@ -224,7 +224,7 @@ class HTMLPurifier_ConfigSchemaTest extends UnitTestCase
|
|||||||
|
|
||||||
$this->assertTrue(!isset($this->our_copy->defaults['Home']['Carpet']));
|
$this->assertTrue(!isset($this->our_copy->defaults['Home']['Carpet']));
|
||||||
$this->assertIdentical($this->our_copy->info['Home']['Carpet'],
|
$this->assertIdentical($this->our_copy->info['Home']['Carpet'],
|
||||||
new HTMLPurifier_ConfigEntity_DirectiveAlias('Home', 'Rug')
|
new HTMLPurifier_ConfigDef_DirectiveAlias('Home', 'Rug')
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->expectError('Cannot define directive alias in undefined namespace');
|
$this->expectError('Cannot define directive alias in undefined namespace');
|
||||||
|
Loading…
Reference in New Issue
Block a user