0
0
mirror of https://github.com/ezyang/htmlpurifier.git synced 2025-01-03 13:21:51 +00:00

[1.5.0] AttrDef partitioned into HTML, CSS and URI segments. Also, some minor bugs with MultiLength fixed.

git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@747 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
Edward Z. Yang 2007-02-14 20:38:51 +00:00
parent 93a69d020a
commit c05eebee15
55 changed files with 301 additions and 298 deletions

1
NEWS
View File

@ -29,6 +29,7 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier
. Removed redundant "exclusionary" definitions from DTD roster . Removed redundant "exclusionary" definitions from DTD roster
. StrictBlockquote now requires a construction parameter as if it . StrictBlockquote now requires a construction parameter as if it
were an Required ChildDef, this is the "real" set of allowed elements were an Required ChildDef, this is the "real" set of allowed elements
. AttrDef partitioned into HTML, CSS and URI segments
1.4.2, unknown release date 1.4.2, unknown release date
! docs/enduser-utf8.html explains how to use UTF-8 and HTML Purifier ! docs/enduser-utf8.html explains how to use UTF-8 and HTML Purifier

View File

@ -7,7 +7,7 @@ require_once 'HTMLPurifier/CSSDefinition.php';
* Validates shorthand CSS property background. * Validates shorthand CSS property background.
* @warning Does not support url tokens that have internal spaces. * @warning Does not support url tokens that have internal spaces.
*/ */
class HTMLPurifier_AttrDef_Background extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_CSS_Background extends HTMLPurifier_AttrDef
{ {
/** /**
@ -16,7 +16,7 @@ class HTMLPurifier_AttrDef_Background extends HTMLPurifier_AttrDef
*/ */
var $info; var $info;
function HTMLPurifier_AttrDef_Background($config) { function HTMLPurifier_AttrDef_CSS_Background($config) {
$def = $config->getCSSDefinition(); $def = $config->getCSSDefinition();
$this->info['background-color'] = $def->info['background-color']; $this->info['background-color'] = $def->info['background-color'];
$this->info['background-image'] = $def->info['background-image']; $this->info['background-image'] = $def->info['background-image'];

View File

@ -1,8 +1,8 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef.php'; require_once 'HTMLPurifier/AttrDef.php';
require_once 'HTMLPurifier/AttrDef/CSSLength.php'; require_once 'HTMLPurifier/AttrDef/CSS/Length.php';
require_once 'HTMLPurifier/AttrDef/Percentage.php'; require_once 'HTMLPurifier/AttrDef/CSS/Percentage.php';
/* W3C says: /* W3C says:
[ // adjective and number must be in correct order, even if [ // adjective and number must be in correct order, even if
@ -45,15 +45,15 @@ require_once 'HTMLPurifier/AttrDef/Percentage.php';
/** /**
* Validates the value of background-position. * Validates the value of background-position.
*/ */
class HTMLPurifier_AttrDef_BackgroundPosition extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_CSS_BackgroundPosition extends HTMLPurifier_AttrDef
{ {
var $length; var $length;
var $percentage; var $percentage;
function HTMLPurifier_AttrDef_BackgroundPosition() { function HTMLPurifier_AttrDef_CSS_BackgroundPosition() {
$this->length = new HTMLPurifier_AttrDef_CSSLength(); $this->length = new HTMLPurifier_AttrDef_CSS_Length();
$this->percentage = new HTMLPurifier_AttrDef_Percentage(); $this->percentage = new HTMLPurifier_AttrDef_CSS_Percentage();
} }
function validate($string, $config, &$context) { function validate($string, $config, &$context) {

View File

@ -5,7 +5,7 @@ require_once 'HTMLPurifier/AttrDef.php';
/** /**
* Validates the border property as defined by CSS. * Validates the border property as defined by CSS.
*/ */
class HTMLPurifier_AttrDef_Border extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_CSS_Border extends HTMLPurifier_AttrDef
{ {
/** /**
@ -13,7 +13,7 @@ class HTMLPurifier_AttrDef_Border extends HTMLPurifier_AttrDef
*/ */
var $info = array(); var $info = array();
function HTMLPurifier_AttrDef_Border($config) { function HTMLPurifier_AttrDef_CSS_Border($config) {
$def = $config->getCSSDefinition(); $def = $config->getCSSDefinition();
$this->info['border-width'] = $def->info['border-width']; $this->info['border-width'] = $def->info['border-width'];
$this->info['border-style'] = $def->info['border-style']; $this->info['border-style'] = $def->info['border-style'];

View File

@ -5,7 +5,7 @@ require_once 'HTMLPurifier/AttrDef.php';
/** /**
* Validates Color as defined by CSS. * Validates Color as defined by CSS.
*/ */
class HTMLPurifier_AttrDef_Color extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef
{ {
/** /**

View File

@ -9,7 +9,7 @@
* especially useful for CSS values, which often are a choice between * especially useful for CSS values, which often are a choice between
* an enumerated set of predefined values or a flexible data type. * an enumerated set of predefined values or a flexible data type.
*/ */
class HTMLPurifier_AttrDef_Composite extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_CSS_Composite extends HTMLPurifier_AttrDef
{ {
/** /**
@ -21,7 +21,7 @@ class HTMLPurifier_AttrDef_Composite extends HTMLPurifier_AttrDef
/** /**
* @param $defs List of HTMLPurifier_AttrDef objects * @param $defs List of HTMLPurifier_AttrDef objects
*/ */
function HTMLPurifier_AttrDef_Composite($defs) { function HTMLPurifier_AttrDef_CSS_Composite($defs) {
$this->defs = $defs; $this->defs = $defs;
} }

View File

@ -5,7 +5,7 @@ require_once 'HTMLPurifier/AttrDef.php';
/** /**
* Validates shorthand CSS property font. * Validates shorthand CSS property font.
*/ */
class HTMLPurifier_AttrDef_Font extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
{ {
/** /**
@ -30,7 +30,7 @@ class HTMLPurifier_AttrDef_Font extends HTMLPurifier_AttrDef
'status-bar' => true 'status-bar' => true
); );
function HTMLPurifier_AttrDef_Font($config) { function HTMLPurifier_AttrDef_CSS_Font($config) {
$def = $config->getCSSDefinition(); $def = $config->getCSSDefinition();
$this->info['font-style'] = $def->info['font-style']; $this->info['font-style'] = $def->info['font-style'];
$this->info['font-variant'] = $def->info['font-variant']; $this->info['font-variant'] = $def->info['font-variant'];

View File

@ -7,7 +7,7 @@ require_once 'HTMLPurifier/AttrDef.php';
/** /**
* Validates a font family list according to CSS spec * Validates a font family list according to CSS spec
*/ */
class HTMLPurifier_AttrDef_FontFamily extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_CSS_FontFamily extends HTMLPurifier_AttrDef
{ {
/** /**

View File

@ -1,13 +1,12 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef.php'; require_once 'HTMLPurifier/AttrDef.php';
require_once 'HTMLPurifier/AttrDef/Number.php'; require_once 'HTMLPurifier/AttrDef/CSS/Number.php';
/** /**
* Represents a Length as defined by CSS. * Represents a Length as defined by CSS.
* @warning Be sure not to confuse this with HTMLPurifier_AttrDef_Length!
*/ */
class HTMLPurifier_AttrDef_CSSLength extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_CSS_Length extends HTMLPurifier_AttrDef
{ {
/** /**
@ -26,8 +25,8 @@ class HTMLPurifier_AttrDef_CSSLength extends HTMLPurifier_AttrDef
* @param $non_negative Bool indication whether or not negative values are * @param $non_negative Bool indication whether or not negative values are
* allowed. * allowed.
*/ */
function HTMLPurifier_AttrDef_CSSLength($non_negative = false) { function HTMLPurifier_AttrDef_CSS_Length($non_negative = false) {
$this->number_def = new HTMLPurifier_AttrDef_Number($non_negative); $this->number_def = new HTMLPurifier_AttrDef_CSS_Number($non_negative);
} }
function validate($length, $config, &$context) { function validate($length, $config, &$context) {

View File

@ -6,16 +6,16 @@ require_once 'HTMLPurifier/AttrDef.php';
* Validates shorthand CSS property list-style. * Validates shorthand CSS property list-style.
* @warning Does not support url tokens that have internal spaces. * @warning Does not support url tokens that have internal spaces.
*/ */
class HTMLPurifier_AttrDef_ListStyle extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_CSS_ListStyle extends HTMLPurifier_AttrDef
{ {
/** /**
* Local copy of component validators. * Local copy of component validators.
* @note See HTMLPurifier_AttrDef_Font::$info for a similar impl. * @note See HTMLPurifier_AttrDef_CSS_Font::$info for a similar impl.
*/ */
var $info; var $info;
function HTMLPurifier_AttrDef_ListStyle($config) { function HTMLPurifier_AttrDef_CSS_ListStyle($config) {
$def = $config->getCSSDefinition(); $def = $config->getCSSDefinition();
$this->info['list-style-type'] = $def->info['list-style-type']; $this->info['list-style-type'] = $def->info['list-style-type'];
$this->info['list-style-position'] = $def->info['list-style-position']; $this->info['list-style-position'] = $def->info['list-style-position'];

View File

@ -13,7 +13,7 @@ require_once 'HTMLPurifier/AttrDef.php';
* can only be used alone: it will never manifest as part of a multi * can only be used alone: it will never manifest as part of a multi
* shorthand declaration. Thus, this class does not allow inherit. * shorthand declaration. Thus, this class does not allow inherit.
*/ */
class HTMLPurifier_AttrDef_Multiple extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_CSS_Multiple extends HTMLPurifier_AttrDef
{ {
/** /**
@ -30,7 +30,7 @@ class HTMLPurifier_AttrDef_Multiple extends HTMLPurifier_AttrDef
* @param $single HTMLPurifier_AttrDef to multiply * @param $single HTMLPurifier_AttrDef to multiply
* @param $max Max number of values allowed (usually four) * @param $max Max number of values allowed (usually four)
*/ */
function HTMLPurifier_AttrDef_Multiple($single, $max = 4) { function HTMLPurifier_AttrDef_CSS_Multiple($single, $max = 4) {
$this->single = $single; $this->single = $single;
$this->max = $max; $this->max = $max;
} }

View File

@ -3,7 +3,7 @@
/** /**
* Validates a number as defined by the CSS spec. * Validates a number as defined by the CSS spec.
*/ */
class HTMLPurifier_AttrDef_Number extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_CSS_Number extends HTMLPurifier_AttrDef
{ {
/** /**
@ -14,7 +14,7 @@ class HTMLPurifier_AttrDef_Number extends HTMLPurifier_AttrDef
/** /**
* @param $non_negative Bool indicating whether negatives are forbidden * @param $non_negative Bool indicating whether negatives are forbidden
*/ */
function HTMLPurifier_AttrDef_Number($non_negative = false) { function HTMLPurifier_AttrDef_CSS_Number($non_negative = false) {
$this->non_negative = $non_negative; $this->non_negative = $non_negative;
} }

View File

@ -1,24 +1,24 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef.php'; require_once 'HTMLPurifier/AttrDef.php';
require_once 'HTMLPurifier/AttrDef/Number.php'; require_once 'HTMLPurifier/AttrDef/CSS/Number.php';
/** /**
* Validates a Percentage as defined by the CSS spec. * Validates a Percentage as defined by the CSS spec.
*/ */
class HTMLPurifier_AttrDef_Percentage extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_CSS_Percentage extends HTMLPurifier_AttrDef
{ {
/** /**
* Instance of HTMLPurifier_AttrDef_Number to defer number validation * Instance of HTMLPurifier_AttrDef_CSS_Number to defer number validation
*/ */
var $number_def; var $number_def;
/** /**
* @param Bool indicating whether to forbid negative values * @param Bool indicating whether to forbid negative values
*/ */
function HTMLPurifier_AttrDef_Percentage($non_negative = false) { function HTMLPurifier_AttrDef_CSS_Percentage($non_negative = false) {
$this->number_def = new HTMLPurifier_AttrDef_Number($non_negative); $this->number_def = new HTMLPurifier_AttrDef_CSS_Number($non_negative);
} }
function validate($string, $config, &$context) { function validate($string, $config, &$context) {

View File

@ -7,7 +7,7 @@ require_once 'HTMLPurifier/AttrDef.php';
* @note This class could be generalized into a version that acts sort of * @note This class could be generalized into a version that acts sort of
* like Enum except you can compound the allowed values. * like Enum except you can compound the allowed values.
*/ */
class HTMLPurifier_AttrDef_TextDecoration extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_CSS_TextDecoration extends HTMLPurifier_AttrDef
{ {
/** /**

View File

@ -11,10 +11,10 @@ require_once 'HTMLPurifier/AttrDef/URI.php';
* the separator, you cannot put a literal semicolon in * the separator, you cannot put a literal semicolon in
* in the URI. Try percent encoding it, in that case. * in the URI. Try percent encoding it, in that case.
*/ */
class HTMLPurifier_AttrDef_CSSURI extends HTMLPurifier_AttrDef_URI class HTMLPurifier_AttrDef_CSS_URI extends HTMLPurifier_AttrDef_URI
{ {
function HTMLPurifier_AttrDef_CSSURI() { function HTMLPurifier_AttrDef_CSS_URI() {
$this->HTMLPurifier_AttrDef_URI(true); // always embedded $this->HTMLPurifier_AttrDef_URI(true); // always embedded
} }

View File

@ -52,7 +52,7 @@ HTMLPurifier_ConfigSchema::define(
* blacklist. If you're hacking around, make sure you use load()! * blacklist. If you're hacking around, make sure you use load()!
*/ */
class HTMLPurifier_AttrDef_ID extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_HTML_ID extends HTMLPurifier_AttrDef
{ {
// ref functionality disabled, since we also have to verify // ref functionality disabled, since we also have to verify

View File

@ -1,18 +1,16 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef.php'; require_once 'HTMLPurifier/AttrDef.php';
require_once 'HTMLPurifier/AttrDef/Pixels.php'; require_once 'HTMLPurifier/AttrDef/HTML/Pixels.php';
/** /**
* Validates the HTML type length (not to be confused with CSS's length). * Validates the HTML type length (not to be confused with CSS's length).
* *
* This accepts integer pixels or percentages as lengths for certain * This accepts integer pixels or percentages as lengths for certain
* HTML attributes. Don't use this for CSS: that's * HTML attributes.
* HTMLPurifier_AttrDef_CSSLength which requires prefixes and allows a lot
* more different types.
*/ */
class HTMLPurifier_AttrDef_Length extends HTMLPurifier_AttrDef_Pixels class HTMLPurifier_AttrDef_HTML_Length extends HTMLPurifier_AttrDef_HTML_Pixels
{ {
function validate($string, $config, &$context) { function validate($string, $config, &$context) {

View File

@ -1,7 +1,7 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef.php'; require_once 'HTMLPurifier/AttrDef.php';
require_once 'HTMLPurifier/AttrDef/Length.php'; require_once 'HTMLPurifier/AttrDef/HTML/Length.php';
/** /**
* Validates a MultiLength as defined by the HTML spec. * Validates a MultiLength as defined by the HTML spec.
@ -9,7 +9,7 @@ require_once 'HTMLPurifier/AttrDef/Length.php';
* A multilength is either a integer (pixel count), a percentage, or * A multilength is either a integer (pixel count), a percentage, or
* a relative number. * a relative number.
*/ */
class HTMLPurifier_AttrDef_MultiLength extends HTMLPurifier_AttrDef_Length class HTMLPurifier_AttrDef_HTML_MultiLength extends HTMLPurifier_AttrDef_HTML_Length
{ {
function validate($string, $config, &$context) { function validate($string, $config, &$context) {
@ -27,12 +27,14 @@ class HTMLPurifier_AttrDef_MultiLength extends HTMLPurifier_AttrDef_Length
$int = substr($string, 0, $length - 1); $int = substr($string, 0, $length - 1);
if ($int == '') return '*';
if (!is_numeric($int)) return false; if (!is_numeric($int)) return false;
$int = (int) $int; $int = (int) $int;
if ($int < 0) return '0*'; if ($int < 0) return false;
if ($int == 0) return '0';
if ($int == 1) return '*';
return ((string) $int) . '*'; return ((string) $int) . '*';
} }

View File

@ -10,7 +10,7 @@ require_once 'HTMLPurifier/Config.php';
* @warning We cannot assume this class will be used only for 'class' * @warning We cannot assume this class will be used only for 'class'
* attributes. Not sure how to hook in magic behavior, then. * attributes. Not sure how to hook in magic behavior, then.
*/ */
class HTMLPurifier_AttrDef_Nmtokens extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_HTML_Nmtokens extends HTMLPurifier_AttrDef
{ {
function validate($string, $config, &$context) { function validate($string, $config, &$context) {

View File

@ -5,7 +5,7 @@ require_once 'HTMLPurifier/AttrDef.php';
/** /**
* Validates an integer representation of pixels according to the HTML spec. * Validates an integer representation of pixels according to the HTML spec.
*/ */
class HTMLPurifier_AttrDef_Pixels extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_HTML_Pixels extends HTMLPurifier_AttrDef
{ {
function validate($string, $config, &$context) { function validate($string, $config, &$context) {

View File

@ -3,7 +3,7 @@
require_once 'HTMLPurifier/AttrDef.php'; require_once 'HTMLPurifier/AttrDef.php';
require_once 'HTMLPurifier/URIScheme.php'; require_once 'HTMLPurifier/URIScheme.php';
require_once 'HTMLPurifier/URISchemeRegistry.php'; require_once 'HTMLPurifier/URISchemeRegistry.php';
require_once 'HTMLPurifier/AttrDef/Host.php'; require_once 'HTMLPurifier/AttrDef/URI/Host.php';
require_once 'HTMLPurifier/PercentEncoder.php'; require_once 'HTMLPurifier/PercentEncoder.php';
HTMLPurifier_ConfigSchema::define( HTMLPurifier_ConfigSchema::define(
@ -100,7 +100,7 @@ class HTMLPurifier_AttrDef_URI extends HTMLPurifier_AttrDef
* @param $embeds_resource_resource Does the URI here result in an extra HTTP request? * @param $embeds_resource_resource Does the URI here result in an extra HTTP request?
*/ */
function HTMLPurifier_AttrDef_URI($embeds_resource = false) { function HTMLPurifier_AttrDef_URI($embeds_resource = false) {
$this->host = new HTMLPurifier_AttrDef_Host(); $this->host = new HTMLPurifier_AttrDef_URI_Host();
$this->PercentEncoder = new HTMLPurifier_PercentEncoder(); $this->PercentEncoder = new HTMLPurifier_PercentEncoder();
$this->embeds_resource = (bool) $embeds_resource; $this->embeds_resource = (bool) $embeds_resource;
} }

View File

@ -2,7 +2,7 @@
require_once 'HTMLPurifier/AttrDef.php'; require_once 'HTMLPurifier/AttrDef.php';
class HTMLPurifier_AttrDef_Email extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_URI_Email extends HTMLPurifier_AttrDef
{ {
/** /**

View File

@ -1,12 +1,12 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/Email.php'; require_once 'HTMLPurifier/AttrDef/URI/Email.php';
/** /**
* Primitive email validation class based on the regexp found at * Primitive email validation class based on the regexp found at
* http://www.regular-expressions.info/email.html * http://www.regular-expressions.info/email.html
*/ */
class HTMLPurifier_AttrDef_Email_SimpleCheck extends HTMLPurifier_AttrDef_Email class HTMLPurifier_AttrDef_URI_Email_SimpleCheck extends HTMLPurifier_AttrDef_URI_Email
{ {
function validate($string, $config, &$context) { function validate($string, $config, &$context) {

View File

@ -1,28 +1,28 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef.php'; require_once 'HTMLPurifier/AttrDef.php';
require_once 'HTMLPurifier/AttrDef/IPv4.php'; require_once 'HTMLPurifier/AttrDef/URI/IPv4.php';
require_once 'HTMLPurifier/AttrDef/IPv6.php'; require_once 'HTMLPurifier/AttrDef/URI/IPv6.php';
/** /**
* Validates a host according to the IPv4, IPv6 and DNS (future) specifications. * Validates a host according to the IPv4, IPv6 and DNS (future) specifications.
*/ */
class HTMLPurifier_AttrDef_Host extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_URI_Host extends HTMLPurifier_AttrDef
{ {
/** /**
* Instance of HTMLPurifier_AttrDef_IPv4 sub-validator * Instance of HTMLPurifier_AttrDef_URI_IPv4 sub-validator
*/ */
var $ipv4; var $ipv4;
/** /**
* Instance of HTMLPurifier_AttrDef_IPv6 sub-validator * Instance of HTMLPurifier_AttrDef_URI_IPv6 sub-validator
*/ */
var $ipv6; var $ipv6;
function HTMLPurifier_AttrDef_Host() { function HTMLPurifier_AttrDef_URI_Host() {
$this->ipv4 = new HTMLPurifier_AttrDef_IPv4(); $this->ipv4 = new HTMLPurifier_AttrDef_URI_IPv4();
$this->ipv6 = new HTMLPurifier_AttrDef_IPv6(); $this->ipv6 = new HTMLPurifier_AttrDef_URI_IPv6();
} }
function validate($string, $config, &$context) { function validate($string, $config, &$context) {

View File

@ -6,7 +6,7 @@ require_once 'HTMLPurifier/AttrDef.php';
* Validates an IPv4 address * Validates an IPv4 address
* @author Feyd @ forums.devnetwork.net (public domain) * @author Feyd @ forums.devnetwork.net (public domain)
*/ */
class HTMLPurifier_AttrDef_IPv4 extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_URI_IPv4 extends HTMLPurifier_AttrDef
{ {
/** /**
@ -15,7 +15,7 @@ class HTMLPurifier_AttrDef_IPv4 extends HTMLPurifier_AttrDef
*/ */
var $ip4; var $ip4;
function HTMLPurifier_AttrDef_IPv4() { function HTMLPurifier_AttrDef_URI_IPv4() {
$oct = '(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])'; // 0-255 $oct = '(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])'; // 0-255
$this->ip4 = "(?:{$oct}\\.{$oct}\\.{$oct}\\.{$oct})"; $this->ip4 = "(?:{$oct}\\.{$oct}\\.{$oct}\\.{$oct})";
} }

View File

@ -1,6 +1,6 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/IPv4.php'; require_once 'HTMLPurifier/AttrDef/URI/IPv4.php';
/** /**
* Validates an IPv6 address. * Validates an IPv6 address.
@ -8,7 +8,7 @@ require_once 'HTMLPurifier/AttrDef/IPv4.php';
* @note This function requires brackets to have been removed from address * @note This function requires brackets to have been removed from address
* in URI. * in URI.
*/ */
class HTMLPurifier_AttrDef_IPv6 extends HTMLPurifier_AttrDef_IPv4 class HTMLPurifier_AttrDef_URI_IPv6 extends HTMLPurifier_AttrDef_URI_IPv4
{ {
function validate($aIP, $config, &$context) { function validate($aIP, $config, &$context) {

View File

@ -1,13 +1,13 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/Nmtokens.php'; require_once 'HTMLPurifier/AttrDef/HTML/ID.php';
require_once 'HTMLPurifier/AttrDef/Text.php'; require_once 'HTMLPurifier/AttrDef/HTML/Length.php';
require_once 'HTMLPurifier/AttrDef/ID.php'; require_once 'HTMLPurifier/AttrDef/HTML/MultiLength.php';
require_once 'HTMLPurifier/AttrDef/URI.php'; require_once 'HTMLPurifier/AttrDef/HTML/Nmtokens.php';
require_once 'HTMLPurifier/AttrDef/Pixels.php'; require_once 'HTMLPurifier/AttrDef/HTML/Pixels.php';
require_once 'HTMLPurifier/AttrDef/Length.php';
require_once 'HTMLPurifier/AttrDef/MultiLength.php';
require_once 'HTMLPurifier/AttrDef/Integer.php'; require_once 'HTMLPurifier/AttrDef/Integer.php';
require_once 'HTMLPurifier/AttrDef/Text.php';
require_once 'HTMLPurifier/AttrDef/URI.php';
/** /**
* Provides lookup array of attribute types to HTMLPurifier_AttrDef objects * Provides lookup array of attribute types to HTMLPurifier_AttrDef objects
@ -24,17 +24,17 @@ class HTMLPurifier_AttrTypes
* Constructs the info array * Constructs the info array
*/ */
function HTMLPurifier_AttrTypes() { function HTMLPurifier_AttrTypes() {
$this->info['NMTOKENS'] = new HTMLPurifier_AttrDef_Nmtokens(); $this->info['CDATA'] = new HTMLPurifier_AttrDef_Text();
$this->info['CDATA'] = new HTMLPurifier_AttrDef_Text(); $this->info['ID'] = new HTMLPurifier_AttrDef_HTML_ID();
$this->info['Text'] = new HTMLPurifier_AttrDef_Text(); $this->info['Length'] = new HTMLPurifier_AttrDef_HTML_Length();
$this->info['ID'] = new HTMLPurifier_AttrDef_ID(); $this->info['MultiLength'] = new HTMLPurifier_AttrDef_HTML_MultiLength();
$this->info['URI'] = new HTMLPurifier_AttrDef_URI(); $this->info['NMTOKENS'] = new HTMLPurifier_AttrDef_HTML_Nmtokens();
$this->info['Pixels'] = new HTMLPurifier_AttrDef_Pixels(); $this->info['Pixels'] = new HTMLPurifier_AttrDef_HTML_Pixels();
$this->info['Length'] = new HTMLPurifier_AttrDef_Length(); $this->info['Text'] = new HTMLPurifier_AttrDef_Text();
$this->info['MultiLength'] = new HTMLPurifier_AttrDef_MultiLength(); $this->info['URI'] = new HTMLPurifier_AttrDef_URI();
// number is really a positive integer, according to XML one or
// more digits // number is really a positive integer (one or more digits)
$this->info['Number'] = new HTMLPurifier_AttrDef_Integer(false, false, true); $this->info['Number'] = new HTMLPurifier_AttrDef_Integer(false, false, true);
} }
} }

View File

@ -1,19 +1,19 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/CSS/Background.php';
require_once 'HTMLPurifier/AttrDef/CSS/BackgroundPosition.php';
require_once 'HTMLPurifier/AttrDef/CSS/Border.php';
require_once 'HTMLPurifier/AttrDef/CSS/Color.php';
require_once 'HTMLPurifier/AttrDef/CSS/Composite.php';
require_once 'HTMLPurifier/AttrDef/CSS/Font.php';
require_once 'HTMLPurifier/AttrDef/CSS/FontFamily.php';
require_once 'HTMLPurifier/AttrDef/CSS/Length.php';
require_once 'HTMLPurifier/AttrDef/CSS/ListStyle.php';
require_once 'HTMLPurifier/AttrDef/CSS/Multiple.php';
require_once 'HTMLPurifier/AttrDef/CSS/Percentage.php';
require_once 'HTMLPurifier/AttrDef/CSS/TextDecoration.php';
require_once 'HTMLPurifier/AttrDef/CSS/URI.php';
require_once 'HTMLPurifier/AttrDef/Enum.php'; require_once 'HTMLPurifier/AttrDef/Enum.php';
require_once 'HTMLPurifier/AttrDef/Color.php';
require_once 'HTMLPurifier/AttrDef/Composite.php';
require_once 'HTMLPurifier/AttrDef/CSSLength.php';
require_once 'HTMLPurifier/AttrDef/Percentage.php';
require_once 'HTMLPurifier/AttrDef/Multiple.php';
require_once 'HTMLPurifier/AttrDef/TextDecoration.php';
require_once 'HTMLPurifier/AttrDef/FontFamily.php';
require_once 'HTMLPurifier/AttrDef/Font.php';
require_once 'HTMLPurifier/AttrDef/Border.php';
require_once 'HTMLPurifier/AttrDef/ListStyle.php';
require_once 'HTMLPurifier/AttrDef/CSSURI.php';
require_once 'HTMLPurifier/AttrDef/BackgroundPosition.php';
require_once 'HTMLPurifier/AttrDef/Background.php';
/** /**
* Defines allowed CSS attributes and what their values are. * Defines allowed CSS attributes and what their values are.
@ -43,7 +43,7 @@ class HTMLPurifier_CSSDefinition
array('none', 'hidden', 'dotted', 'dashed', 'solid', 'double', array('none', 'hidden', 'dotted', 'dashed', 'solid', 'double',
'groove', 'ridge', 'inset', 'outset'), false); 'groove', 'ridge', 'inset', 'outset'), false);
$this->info['border-style'] = new HTMLPurifier_AttrDef_Multiple($border_style); $this->info['border-style'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_style);
$this->info['clear'] = new HTMLPurifier_AttrDef_Enum( $this->info['clear'] = new HTMLPurifier_AttrDef_Enum(
array('none', 'left', 'right', 'both'), false); array('none', 'left', 'right', 'both'), false);
@ -54,10 +54,10 @@ class HTMLPurifier_CSSDefinition
$this->info['font-variant'] = new HTMLPurifier_AttrDef_Enum( $this->info['font-variant'] = new HTMLPurifier_AttrDef_Enum(
array('normal', 'small-caps'), false); array('normal', 'small-caps'), false);
$uri_or_none = new HTMLPurifier_AttrDef_Composite( $uri_or_none = new HTMLPurifier_AttrDef_CSS_Composite(
array( array(
new HTMLPurifier_AttrDef_Enum(array('none')), new HTMLPurifier_AttrDef_Enum(array('none')),
new HTMLPurifier_AttrDef_CSSURI() new HTMLPurifier_AttrDef_CSS_URI()
) )
); );
@ -68,11 +68,11 @@ class HTMLPurifier_CSSDefinition
'upper-roman', 'lower-alpha', 'upper-alpha', 'none'), false); 'upper-roman', 'lower-alpha', 'upper-alpha', 'none'), false);
$this->info['list-style-image'] = $uri_or_none; $this->info['list-style-image'] = $uri_or_none;
$this->info['list-style'] = new HTMLPurifier_AttrDef_ListStyle($config); $this->info['list-style'] = new HTMLPurifier_AttrDef_CSS_ListStyle($config);
$this->info['text-transform'] = new HTMLPurifier_AttrDef_Enum( $this->info['text-transform'] = new HTMLPurifier_AttrDef_Enum(
array('capitalize', 'uppercase', 'lowercase', 'none'), false); array('capitalize', 'uppercase', 'lowercase', 'none'), false);
$this->info['color'] = new HTMLPurifier_AttrDef_Color(); $this->info['color'] = new HTMLPurifier_AttrDef_CSS_Color();
$this->info['background-image'] = $uri_or_none; $this->info['background-image'] = $uri_or_none;
$this->info['background-repeat'] = new HTMLPurifier_AttrDef_Enum( $this->info['background-repeat'] = new HTMLPurifier_AttrDef_Enum(
@ -81,96 +81,96 @@ class HTMLPurifier_CSSDefinition
$this->info['background-attachment'] = new HTMLPurifier_AttrDef_Enum( $this->info['background-attachment'] = new HTMLPurifier_AttrDef_Enum(
array('scroll', 'fixed') array('scroll', 'fixed')
); );
$this->info['background-position'] = new HTMLPurifier_AttrDef_BackgroundPosition(); $this->info['background-position'] = new HTMLPurifier_AttrDef_CSS_BackgroundPosition();
$border_color = $border_color =
$this->info['border-top-color'] = $this->info['border-top-color'] =
$this->info['border-bottom-color'] = $this->info['border-bottom-color'] =
$this->info['border-left-color'] = $this->info['border-left-color'] =
$this->info['border-right-color'] = $this->info['border-right-color'] =
$this->info['background-color'] = new HTMLPurifier_AttrDef_Composite(array( $this->info['background-color'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
new HTMLPurifier_AttrDef_Enum(array('transparent')), new HTMLPurifier_AttrDef_Enum(array('transparent')),
new HTMLPurifier_AttrDef_Color() new HTMLPurifier_AttrDef_CSS_Color()
)); ));
$this->info['background'] = new HTMLPurifier_AttrDef_Background($config); $this->info['background'] = new HTMLPurifier_AttrDef_CSS_Background($config);
$this->info['border-color'] = new HTMLPurifier_AttrDef_Multiple($border_color); $this->info['border-color'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_color);
$border_width = $border_width =
$this->info['border-top-width'] = $this->info['border-top-width'] =
$this->info['border-bottom-width'] = $this->info['border-bottom-width'] =
$this->info['border-left-width'] = $this->info['border-left-width'] =
$this->info['border-right-width'] = new HTMLPurifier_AttrDef_Composite(array( $this->info['border-right-width'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
new HTMLPurifier_AttrDef_Enum(array('thin', 'medium', 'thick')), new HTMLPurifier_AttrDef_Enum(array('thin', 'medium', 'thick')),
new HTMLPurifier_AttrDef_CSSLength(true) //disallow negative new HTMLPurifier_AttrDef_CSS_Length(true) //disallow negative
)); ));
$this->info['border-width'] = new HTMLPurifier_AttrDef_Multiple($border_width); $this->info['border-width'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_width);
$this->info['letter-spacing'] = new HTMLPurifier_AttrDef_Composite(array( $this->info['letter-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
new HTMLPurifier_AttrDef_Enum(array('normal')), new HTMLPurifier_AttrDef_Enum(array('normal')),
new HTMLPurifier_AttrDef_CSSLength() new HTMLPurifier_AttrDef_CSS_Length()
)); ));
$this->info['word-spacing'] = new HTMLPurifier_AttrDef_Composite(array( $this->info['word-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
new HTMLPurifier_AttrDef_Enum(array('normal')), new HTMLPurifier_AttrDef_Enum(array('normal')),
new HTMLPurifier_AttrDef_CSSLength() new HTMLPurifier_AttrDef_CSS_Length()
)); ));
$this->info['font-size'] = new HTMLPurifier_AttrDef_Composite(array( $this->info['font-size'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
new HTMLPurifier_AttrDef_Enum(array('xx-small', 'x-small', new HTMLPurifier_AttrDef_Enum(array('xx-small', 'x-small',
'small', 'medium', 'large', 'x-large', 'xx-large', 'small', 'medium', 'large', 'x-large', 'xx-large',
'larger', 'smaller')), 'larger', 'smaller')),
new HTMLPurifier_AttrDef_Percentage(), new HTMLPurifier_AttrDef_CSS_Percentage(),
new HTMLPurifier_AttrDef_CSSLength() new HTMLPurifier_AttrDef_CSS_Length()
)); ));
$this->info['line-height'] = new HTMLPurifier_AttrDef_Composite(array( $this->info['line-height'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
new HTMLPurifier_AttrDef_Enum(array('normal')), new HTMLPurifier_AttrDef_Enum(array('normal')),
new HTMLPurifier_AttrDef_Number(true), // no negatives new HTMLPurifier_AttrDef_CSS_Number(true), // no negatives
new HTMLPurifier_AttrDef_CSSLength(true), new HTMLPurifier_AttrDef_CSS_Length(true),
new HTMLPurifier_AttrDef_Percentage(true) new HTMLPurifier_AttrDef_CSS_Percentage(true)
)); ));
$margin = $margin =
$this->info['margin-top'] = $this->info['margin-top'] =
$this->info['margin-bottom'] = $this->info['margin-bottom'] =
$this->info['margin-left'] = $this->info['margin-left'] =
$this->info['margin-right'] = new HTMLPurifier_AttrDef_Composite(array( $this->info['margin-right'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
new HTMLPurifier_AttrDef_CSSLength(), new HTMLPurifier_AttrDef_CSS_Length(),
new HTMLPurifier_AttrDef_Percentage(), new HTMLPurifier_AttrDef_CSS_Percentage(),
new HTMLPurifier_AttrDef_Enum(array('auto')) new HTMLPurifier_AttrDef_Enum(array('auto'))
)); ));
$this->info['margin'] = new HTMLPurifier_AttrDef_Multiple($margin); $this->info['margin'] = new HTMLPurifier_AttrDef_CSS_Multiple($margin);
// non-negative // non-negative
$padding = $padding =
$this->info['padding-top'] = $this->info['padding-top'] =
$this->info['padding-bottom'] = $this->info['padding-bottom'] =
$this->info['padding-left'] = $this->info['padding-left'] =
$this->info['padding-right'] = new HTMLPurifier_AttrDef_Composite(array( $this->info['padding-right'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
new HTMLPurifier_AttrDef_CSSLength(true), new HTMLPurifier_AttrDef_CSS_Length(true),
new HTMLPurifier_AttrDef_Percentage(true) new HTMLPurifier_AttrDef_CSS_Percentage(true)
)); ));
$this->info['padding'] = new HTMLPurifier_AttrDef_Multiple($padding); $this->info['padding'] = new HTMLPurifier_AttrDef_CSS_Multiple($padding);
$this->info['text-indent'] = new HTMLPurifier_AttrDef_Composite(array( $this->info['text-indent'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
new HTMLPurifier_AttrDef_CSSLength(), new HTMLPurifier_AttrDef_CSS_Length(),
new HTMLPurifier_AttrDef_Percentage() new HTMLPurifier_AttrDef_CSS_Percentage()
)); ));
$this->info['width'] = new HTMLPurifier_AttrDef_Composite(array( $this->info['width'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
new HTMLPurifier_AttrDef_CSSLength(true), new HTMLPurifier_AttrDef_CSS_Length(true),
new HTMLPurifier_AttrDef_Percentage(true), new HTMLPurifier_AttrDef_CSS_Percentage(true),
new HTMLPurifier_AttrDef_Enum(array('auto')) new HTMLPurifier_AttrDef_Enum(array('auto'))
)); ));
$this->info['text-decoration'] = new HTMLPurifier_AttrDef_TextDecoration(); $this->info['text-decoration'] = new HTMLPurifier_AttrDef_CSS_TextDecoration();
$this->info['font-family'] = new HTMLPurifier_AttrDef_FontFamily(); $this->info['font-family'] = new HTMLPurifier_AttrDef_CSS_FontFamily();
// this could use specialized code // this could use specialized code
$this->info['font-weight'] = new HTMLPurifier_AttrDef_Enum( $this->info['font-weight'] = new HTMLPurifier_AttrDef_Enum(
@ -179,14 +179,14 @@ class HTMLPurifier_CSSDefinition
// MUST be called after other font properties, as it references // MUST be called after other font properties, as it references
// a CSSDefinition object // a CSSDefinition object
$this->info['font'] = new HTMLPurifier_AttrDef_Font($config); $this->info['font'] = new HTMLPurifier_AttrDef_CSS_Font($config);
// same here // same here
$this->info['border'] = $this->info['border'] =
$this->info['border-bottom'] = $this->info['border-bottom'] =
$this->info['border-top'] = $this->info['border-top'] =
$this->info['border-left'] = $this->info['border-left'] =
$this->info['border-right'] = new HTMLPurifier_AttrDef_Border($config); $this->info['border-right'] = new HTMLPurifier_AttrDef_CSS_Border($config);
$this->info['border-collapse'] = new HTMLPurifier_AttrDef_Enum(array( $this->info['border-collapse'] = new HTMLPurifier_AttrDef_Enum(array(
'collapse', 'seperate')); 'collapse', 'seperate'));
@ -197,11 +197,11 @@ class HTMLPurifier_CSSDefinition
$this->info['table-layout'] = new HTMLPurifier_AttrDef_Enum(array( $this->info['table-layout'] = new HTMLPurifier_AttrDef_Enum(array(
'auto', 'fixed')); 'auto', 'fixed'));
$this->info['vertical-align'] = new HTMLPurifier_AttrDef_Composite(array( $this->info['vertical-align'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
new HTMLPurifier_AttrDef_Enum(array('baseline', 'sub', 'super', new HTMLPurifier_AttrDef_Enum(array('baseline', 'sub', 'super',
'top', 'text-top', 'middle', 'bottom', 'text-bottom')), 'top', 'text-top', 'middle', 'bottom', 'text-bottom')),
new HTMLPurifier_AttrDef_CSSLength(), new HTMLPurifier_AttrDef_CSS_Length(),
new HTMLPurifier_AttrDef_Percentage() new HTMLPurifier_AttrDef_CSS_Percentage()
)); ));
} }

View File

@ -7,7 +7,7 @@ require_once 'HTMLPurifier/ContentSets.php';
require_once 'HTMLPurifier/ElementDef.php'; require_once 'HTMLPurifier/ElementDef.php';
require_once 'HTMLPurifier/AttrDef.php'; require_once 'HTMLPurifier/AttrDef.php';
require_once 'HTMLPurifier/AttrDef/Enum.php'; // common require_once 'HTMLPurifier/AttrDef/Enum.php';
// temporary: attribute transformations // temporary: attribute transformations
require_once 'HTMLPurifier/AttrTransform.php'; require_once 'HTMLPurifier/AttrTransform.php';

View File

@ -1,14 +1,14 @@
<?php <?php
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
require_once 'HTMLPurifier/AttrDef/BackgroundPosition.php'; require_once 'HTMLPurifier/AttrDef/CSS/BackgroundPosition.php';
class HTMLPurifier_AttrDef_BackgroundPositionTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_CSS_BackgroundPositionTest extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_BackgroundPosition(); $this->def = new HTMLPurifier_AttrDef_CSS_BackgroundPosition();
// explicitly cited in spec // explicitly cited in spec
$this->assertDef('0% 0%'); $this->assertDef('0% 0%');

View File

@ -1,14 +1,15 @@
<?php <?php
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
require_once 'HTMLPurifier/AttrDef/Background.php'; require_once 'HTMLPurifier/AttrDef/CSS/Background.php';
class HTMLPurifier_AttrDef_BackgroundTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_CSS_BackgroundTest extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_Background(HTMLPurifier_Config::createDefault()); $config = HTMLPurifier_Config::createDefault();
$this->def = new HTMLPurifier_AttrDef_CSS_Background($config);
$valid = '#333 url(chess.png) repeat fixed 50% top'; $valid = '#333 url(chess.png) repeat fixed 50% top';
$this->assertDef($valid); $this->assertDef($valid);

View File

@ -1,14 +1,14 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/Border.php'; require_once 'HTMLPurifier/AttrDef/CSS/Border.php';
require_once 'HTMLPurifier/AttrDef/PixelsTest.php';
class HTMLPurifier_AttrDef_BorderTest extends HTMLPurifier_AttrDef_PixelsTest class HTMLPurifier_AttrDef_CSS_BorderTest extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_Border(HTMLPurifier_Config::createDefault()); $config = HTMLPurifier_Config::createDefault();
$this->def = new HTMLPurifier_AttrDef_CSS_Border($config);
$this->assertDef('thick solid red', 'thick solid #F00'); $this->assertDef('thick solid red', 'thick solid #F00');
$this->assertDef('thick solid'); $this->assertDef('thick solid');

View File

@ -1,14 +1,14 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/Color.php'; require_once 'HTMLPurifier/AttrDef/CSS/Color.php';
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
class HTMLPurifier_AttrDef_ColorTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_CSS_ColorTest extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_Color(); $this->def = new HTMLPurifier_AttrDef_CSS_Color();
$this->assertDef('#F00'); $this->assertDef('#F00');
$this->assertDef('#808080'); $this->assertDef('#808080');

View File

@ -1,20 +1,20 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/Composite.php'; require_once 'HTMLPurifier/AttrDef/CSS/Composite.php';
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
class HTMLPurifier_AttrDef_Composite_Testable extends class HTMLPurifier_AttrDef_CSS_Composite_Testable extends
HTMLPurifier_AttrDef_Composite HTMLPurifier_AttrDef_CSS_Composite
{ {
// we need to pass by ref to get the mocks in // we need to pass by ref to get the mocks in
function HTMLPurifier_AttrDef_Composite_Testable(&$defs) { function HTMLPurifier_AttrDef_CSS_Composite_Testable(&$defs) {
$this->defs =& $defs; $this->defs =& $defs;
} }
} }
class HTMLPurifier_AttrDef_CompositeTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_CSS_CompositeTest extends HTMLPurifier_AttrDefHarness
{ {
var $def1, $def2; var $def1, $def2;
@ -32,7 +32,7 @@ class HTMLPurifier_AttrDef_CompositeTest extends HTMLPurifier_AttrDefHarness
$def1 = new HTMLPurifier_AttrDefMock($this); $def1 = new HTMLPurifier_AttrDefMock($this);
$def2 = new HTMLPurifier_AttrDefMock($this); $def2 = new HTMLPurifier_AttrDefMock($this);
$defs = array(&$def1, &$def2); $defs = array(&$def1, &$def2);
$def = new HTMLPurifier_AttrDef_Composite_Testable($defs); $def = new HTMLPurifier_AttrDef_CSS_Composite_Testable($defs);
$input = 'FOOBAR'; $input = 'FOOBAR';
$output = 'foobar'; $output = 'foobar';
$def1_params = array($input, $config, $context); $def1_params = array($input, $config, $context);
@ -51,7 +51,7 @@ class HTMLPurifier_AttrDef_CompositeTest extends HTMLPurifier_AttrDefHarness
$def1 = new HTMLPurifier_AttrDefMock($this); $def1 = new HTMLPurifier_AttrDefMock($this);
$def2 = new HTMLPurifier_AttrDefMock($this); $def2 = new HTMLPurifier_AttrDefMock($this);
$defs = array(&$def1, &$def2); $defs = array(&$def1, &$def2);
$def = new HTMLPurifier_AttrDef_Composite_Testable($defs); $def = new HTMLPurifier_AttrDef_CSS_Composite_Testable($defs);
$input = 'BOOMA'; $input = 'BOOMA';
$output = 'booma'; $output = 'booma';
$def_params = array($input, $config, $context); $def_params = array($input, $config, $context);
@ -71,7 +71,7 @@ class HTMLPurifier_AttrDef_CompositeTest extends HTMLPurifier_AttrDefHarness
$def1 = new HTMLPurifier_AttrDefMock($this); $def1 = new HTMLPurifier_AttrDefMock($this);
$def2 = new HTMLPurifier_AttrDefMock($this); $def2 = new HTMLPurifier_AttrDefMock($this);
$defs = array(&$def1, &$def2); $defs = array(&$def1, &$def2);
$def = new HTMLPurifier_AttrDef_Composite_Testable($defs); $def = new HTMLPurifier_AttrDef_CSS_Composite_Testable($defs);
$input = 'BOOMA'; $input = 'BOOMA';
$output = false; $output = false;
$def_params = array($input, $config, $context); $def_params = array($input, $config, $context);

View File

@ -1,14 +1,14 @@
<?php <?php
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
require_once 'HTMLPurifier/AttrDef/FontFamily.php'; require_once 'HTMLPurifier/AttrDef/CSS/FontFamily.php';
class HTMLPurifier_AttrDef_FontFamilyTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_CSS_FontFamilyTest extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_FontFamily(); $this->def = new HTMLPurifier_AttrDef_CSS_FontFamily();
$this->assertDef('Gill, Helvetica, sans-serif'); $this->assertDef('Gill, Helvetica, sans-serif');
$this->assertDef('\'Times New Roman\', serif'); $this->assertDef('\'Times New Roman\', serif');

View File

@ -1,14 +1,15 @@
<?php <?php
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
require_once 'HTMLPurifier/AttrDef/Font.php'; require_once 'HTMLPurifier/AttrDef/CSS/Font.php';
class HTMLPurifier_AttrDef_FontTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_CSS_FontTest extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_Font(HTMLPurifier_Config::createDefault()); $config = HTMLPurifier_Config::createDefault();
$this->def = new HTMLPurifier_AttrDef_CSS_Font($config);
// hodgepodge of usage cases from W3C spec, but " -> ' // hodgepodge of usage cases from W3C spec, but " -> '
$this->assertDef('12px/14px sans-serif'); $this->assertDef('12px/14px sans-serif');

View File

@ -1,14 +1,14 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/CSSLength.php'; require_once 'HTMLPurifier/AttrDef/CSS/Length.php';
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
class HTMLPurifier_AttrDef_CSSLengthTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_CSS_LengthTest extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_CSSLength(); $this->def = new HTMLPurifier_AttrDef_CSS_Length();
$this->assertDef('0'); $this->assertDef('0');
$this->assertDef('0px'); $this->assertDef('0px');
@ -31,7 +31,7 @@ class HTMLPurifier_AttrDef_CSSLengthTest extends HTMLPurifier_AttrDefHarness
function testNonNegative() { function testNonNegative() {
$this->def = new HTMLPurifier_AttrDef_CSSLength(true); $this->def = new HTMLPurifier_AttrDef_CSS_Length(true);
$this->assertDef('3cm'); $this->assertDef('3cm');
$this->assertDef('-3mm', false); $this->assertDef('-3mm', false);

View File

@ -1,14 +1,15 @@
<?php <?php
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
require_once 'HTMLPurifier/AttrDef/ListStyle.php'; require_once 'HTMLPurifier/AttrDef/CSS/ListStyle.php';
class HTMLPurifier_AttrDef_ListStyleTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_CSS_ListStyleTest extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_ListStyle(HTMLPurifier_Config::createDefault()); $config = HTMLPurifier_Config::createDefault();
$this->def = new HTMLPurifier_AttrDef_CSS_ListStyle($config);
$this->assertDef('lower-alpha'); $this->assertDef('lower-alpha');
$this->assertDef('upper-roman inside'); $this->assertDef('upper-roman inside');

View File

@ -1,16 +1,16 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/Multiple.php'; require_once 'HTMLPurifier/AttrDef/CSS/Multiple.php';
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
// borrowed for the sakes of this test // borrowed for the sakes of this test
require_once 'HTMLPurifier/AttrDef/Integer.php'; require_once 'HTMLPurifier/AttrDef/Integer.php';
class HTMLPurifier_AttrDef_MultipleTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_CSS_MultipleTest extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_Multiple( $this->def = new HTMLPurifier_AttrDef_CSS_Multiple(
new HTMLPurifier_AttrDef_Integer() new HTMLPurifier_AttrDef_Integer()
); );

View File

@ -1,14 +1,14 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/Number.php'; require_once 'HTMLPurifier/AttrDef/CSS/Number.php';
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
class HTMLPurifier_AttrDef_NumberTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_CSS_NumberTest extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_Number(); $this->def = new HTMLPurifier_AttrDef_CSS_Number();
$this->assertDef('0'); $this->assertDef('0');
$this->assertDef('34'); $this->assertDef('34');
@ -29,7 +29,7 @@ class HTMLPurifier_AttrDef_NumberTest extends HTMLPurifier_AttrDefHarness
function testNonNegative() { function testNonNegative() {
$this->def = new HTMLPurifier_AttrDef_Number(true); $this->def = new HTMLPurifier_AttrDef_CSS_Number(true);
$this->assertDef('23'); $this->assertDef('23');
$this->assertDef('-12', false); $this->assertDef('-12', false);

View File

@ -1,14 +1,14 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/Percentage.php'; require_once 'HTMLPurifier/AttrDef/CSS/Percentage.php';
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
class HTMLPurifier_AttrDef_PercentageTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_CSS_PercentageTest extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_Percentage(); $this->def = new HTMLPurifier_AttrDef_CSS_Percentage();
$this->assertDef('10%'); $this->assertDef('10%');
$this->assertDef('1.607%'); $this->assertDef('1.607%');

View File

@ -1,14 +1,14 @@
<?php <?php
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
require_once 'HTMLPurifier/AttrDef/TextDecoration.php'; require_once 'HTMLPurifier/AttrDef/CSS/TextDecoration.php';
class HTMLPurifier_AttrDef_TextDecorationTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_CSS_TextDecorationTest extends HTMLPurifier_AttrDefHarness
{ {
function testCaseInsensitive() { function testCaseInsensitive() {
$this->def = new HTMLPurifier_AttrDef_TextDecoration(); $this->def = new HTMLPurifier_AttrDef_CSS_TextDecoration();
$this->assertDef('underline'); $this->assertDef('underline');
$this->assertDef('overline'); $this->assertDef('overline');

View File

@ -1,14 +1,14 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/CSSURI.php'; require_once 'HTMLPurifier/AttrDef/CSS/URI.php';
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
class HTMLPurifier_AttrDef_CSSURITest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_CSS_URITest extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_CSSURI(); $this->def = new HTMLPurifier_AttrDef_CSS_URI();
$this->assertDef('', false); $this->assertDef('', false);

View File

@ -1,16 +0,0 @@
<?php
require_once 'HTMLPurifier/AttrDef/Email/SimpleCheck.php';
require_once 'HTMLPurifier/AttrDef/EmailHarness.php';
class HTMLPurifier_AttrDef_Email_SimpleCheckTest
extends HTMLPurifier_AttrDef_EmailHarness
{
function setUp() {
$this->def = new HTMLPurifier_AttrDef_Email_SimpleCheck();
}
}
?>

View File

@ -1,10 +1,10 @@
<?php <?php
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
require_once 'HTMLPurifier/AttrDef/ID.php'; require_once 'HTMLPurifier/AttrDef/HTML/ID.php';
require_once 'HTMLPurifier/IDAccumulator.php'; require_once 'HTMLPurifier/IDAccumulator.php';
class HTMLPurifier_AttrDef_IDTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_HTML_IDTest extends HTMLPurifier_AttrDefHarness
{ {
function setUp() { function setUp() {
@ -13,7 +13,7 @@ class HTMLPurifier_AttrDef_IDTest extends HTMLPurifier_AttrDefHarness
$id_accumulator = new HTMLPurifier_IDAccumulator(); $id_accumulator = new HTMLPurifier_IDAccumulator();
$this->context->register('IDAccumulator', $id_accumulator); $this->context->register('IDAccumulator', $id_accumulator);
$this->config->set('Attr', 'EnableID', true); $this->config->set('Attr', 'EnableID', true);
$this->def = new HTMLPurifier_AttrDef_ID(); $this->def = new HTMLPurifier_AttrDef_HTML_ID();
} }
@ -78,18 +78,18 @@ class HTMLPurifier_AttrDef_IDTest extends HTMLPurifier_AttrDefHarness
// reference functionality is disabled for now // reference functionality is disabled for now
function disabled_testIDReference() { function disabled_testIDReference() {
$this->def = new HTMLPurifier_AttrDef_ID(true); $this->def = new HTMLPurifier_AttrDef_HTML_ID(true);
$this->assertDef('good_id'); $this->assertDef('good_id');
$this->assertDef('good_id'); // duplicates okay $this->assertDef('good_id'); // duplicates okay
$this->assertDef('<b>', false); $this->assertDef('<b>', false);
$this->def = new HTMLPurifier_AttrDef_ID(); $this->def = new HTMLPurifier_AttrDef_HTML_ID();
$this->assertDef('good_id'); $this->assertDef('good_id');
$this->assertDef('good_id', false); // duplicate now not okay $this->assertDef('good_id', false); // duplicate now not okay
$this->def = new HTMLPurifier_AttrDef_ID(true); $this->def = new HTMLPurifier_AttrDef_HTML_ID(true);
$this->assertDef('good_id'); // reference still okay $this->assertDef('good_id'); // reference still okay

View File

@ -1,13 +1,13 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/PixelsTest.php'; require_once 'HTMLPurifier/AttrDef/HTML/PixelsTest.php';
require_once 'HTMLPurifier/AttrDef/Length.php'; require_once 'HTMLPurifier/AttrDef/HTML/Length.php';
class HTMLPurifier_AttrDef_LengthTest extends HTMLPurifier_AttrDef_PixelsTest class HTMLPurifier_AttrDef_HTML_LengthTest extends HTMLPurifier_AttrDef_HTML_PixelsTest
{ {
function setup() { function setup() {
$this->def = new HTMLPurifier_AttrDef_Length(); $this->def = new HTMLPurifier_AttrDef_HTML_Length();
} }
function test() { function test() {

View File

@ -1,13 +1,13 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/LengthTest.php'; require_once 'HTMLPurifier/AttrDef/HTML/LengthTest.php';
require_once 'HTMLPurifier/AttrDef/Length.php'; require_once 'HTMLPurifier/AttrDef/HTML/MultiLength.php';
class HTMLPurifier_AttrDef_MultiLengthTest extends HTMLPurifier_AttrDef_LengthTest class HTMLPurifier_AttrDef_HTML_MultiLengthTest extends HTMLPurifier_AttrDef_HTML_LengthTest
{ {
function setup() { function setup() {
$this->def = new HTMLPurifier_AttrDef_MultiLength(); $this->def = new HTMLPurifier_AttrDef_HTML_MultiLength();
} }
function test() { function test() {
@ -16,7 +16,7 @@ class HTMLPurifier_AttrDef_MultiLengthTest extends HTMLPurifier_AttrDef_LengthTe
parent::test(); parent::test();
$this->assertDef('*'); $this->assertDef('*');
$this->assertDef('1*'); $this->assertDef('1*', '*');
$this->assertDef('56*'); $this->assertDef('56*');
$this->assertDef('**', false); // plain old bad $this->assertDef('**', false); // plain old bad

View File

@ -1,15 +1,14 @@
<?php <?php
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
require_once 'HTMLPurifier/AttrDef/Nmtokens.php'; require_once 'HTMLPurifier/AttrDef/HTML/Nmtokens.php';
require_once 'HTMLPurifier/Config.php';
class HTMLPurifier_AttrDef_NmtokensTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_HTML_NmtokensTest extends HTMLPurifier_AttrDefHarness
{ {
function testDefault() { function testDefault() {
$this->def = new HTMLPurifier_AttrDef_Nmtokens(); $this->def = new HTMLPurifier_AttrDef_HTML_Nmtokens();
$this->assertDef('valid'); $this->assertDef('valid');
$this->assertDef('a0-_'); $this->assertDef('a0-_');

View File

@ -1,13 +1,13 @@
<?php <?php
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
require_once 'HTMLPurifier/AttrDef/Pixels.php'; require_once 'HTMLPurifier/AttrDef/HTML/Pixels.php';
class HTMLPurifier_AttrDef_PixelsTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_HTML_PixelsTest extends HTMLPurifier_AttrDefHarness
{ {
function setup() { function setup() {
$this->def = new HTMLPurifier_AttrDef_Pixels(); $this->def = new HTMLPurifier_AttrDef_HTML_Pixels();
} }
function test() { function test() {

View File

@ -0,0 +1,16 @@
<?php
require_once 'HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php';
require_once 'HTMLPurifier/AttrDef/URI/EmailHarness.php';
class HTMLPurifier_AttrDef_URI_Email_SimpleCheckTest
extends HTMLPurifier_AttrDef_URI_EmailHarness
{
function setUp() {
$this->def = new HTMLPurifier_AttrDef_URI_Email_SimpleCheck();
}
}
?>

View File

@ -1,9 +1,9 @@
<?php <?php
require_once 'HTMLPurifier/AttrDef/Email.php'; require_once 'HTMLPurifier/AttrDef/URI/Email.php';
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
class HTMLPurifier_AttrDef_EmailHarness extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_URI_EmailHarness extends HTMLPurifier_AttrDefHarness
{ {
/** /**

View File

@ -1,17 +1,17 @@
<?php <?php
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
require_once 'HTMLPurifier/AttrDef/Host.php'; require_once 'HTMLPurifier/AttrDef/URI/Host.php';
// takes a URI formatted host and validates it // takes a URI formatted host and validates it
class HTMLPurifier_AttrDef_HostTest extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_URI_HostTest extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_Host(); $this->def = new HTMLPurifier_AttrDef_URI_Host();
$this->assertDef('[2001:DB8:0:0:8:800:200C:417A]'); // IPv6 $this->assertDef('[2001:DB8:0:0:8:800:200C:417A]'); // IPv6
$this->assertDef('124.15.6.89'); // IPv4 $this->assertDef('124.15.6.89'); // IPv4

View File

@ -1,17 +1,17 @@
<?php <?php
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
require_once 'HTMLPurifier/AttrDef/IPv4.php'; require_once 'HTMLPurifier/AttrDef/URI/IPv4.php';
// IPv4 test case is spliced from Feyd's IPv6 implementation // IPv4 test case is spliced from Feyd's IPv6 implementation
// we ought to disallow non-routable addresses // we ought to disallow non-routable addresses
class HTMLPurifier_AttrDef_IPv4Test extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_URI_IPv4Test extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_IPv4(); $this->def = new HTMLPurifier_AttrDef_URI_IPv4();
$this->assertDef('127.0.0.1'); // standard IPv4, loopback, non-routable $this->assertDef('127.0.0.1'); // standard IPv4, loopback, non-routable
$this->assertDef('0.0.0.0'); // standard IPv4, unspecified, non-routable $this->assertDef('0.0.0.0'); // standard IPv4, unspecified, non-routable

View File

@ -1,17 +1,17 @@
<?php <?php
require_once 'HTMLPurifier/AttrDefHarness.php'; require_once 'HTMLPurifier/AttrDefHarness.php';
require_once 'HTMLPurifier/AttrDef/IPv6.php'; require_once 'HTMLPurifier/AttrDef/URI/IPv6.php';
// test case is from Feyd's IPv6 implementation // test case is from Feyd's IPv6 implementation
// we ought to disallow non-routable addresses // we ought to disallow non-routable addresses
class HTMLPurifier_AttrDef_IPv6Test extends HTMLPurifier_AttrDefHarness class HTMLPurifier_AttrDef_URI_IPv6Test extends HTMLPurifier_AttrDefHarness
{ {
function test() { function test() {
$this->def = new HTMLPurifier_AttrDef_IPv6(); $this->def = new HTMLPurifier_AttrDef_URI_IPv6();
$this->assertDef('2001:DB8:0:0:8:800:200C:417A'); // unicast, full $this->assertDef('2001:DB8:0:0:8:800:200C:417A'); // unicast, full
$this->assertDef('FF01:0:0:0:0:0:0:101'); // multicast, full $this->assertDef('FF01:0:0:0:0:0:0:101'); // multicast, full

View File

@ -2,70 +2,71 @@
if (!defined('HTMLPurifierTest')) exit; if (!defined('HTMLPurifierTest')) exit;
// define callable test files // define callable test files (sorted alphabetically)
$test_files[] = 'ConfigTest.php'; $test_files[] = 'AttrDef/CSS/BackgroundPositionTest.php';
$test_files[] = 'ConfigSchemaTest.php'; $test_files[] = 'AttrDef/CSS/BackgroundTest.php';
$test_files[] = 'LexerTest.php'; $test_files[] = 'AttrDef/CSS/BorderTest.php';
$test_files[] = 'Lexer/DirectLexTest.php'; $test_files[] = 'AttrDef/CSS/ColorTest.php';
$test_files[] = 'TokenTest.php'; $test_files[] = 'AttrDef/CSS/CompositeTest.php';
$test_files[] = 'ChildDef/RequiredTest.php'; $test_files[] = 'AttrDef/CSS/FontFamilyTest.php';
$test_files[] = 'ChildDef/OptionalTest.php'; $test_files[] = 'AttrDef/CSS/FontTest.php';
$test_files[] = 'ChildDef/ChameleonTest.php'; $test_files[] = 'AttrDef/CSS/LengthTest.php';
$test_files[] = 'ChildDef/CustomTest.php'; $test_files[] = 'AttrDef/CSS/ListStyleTest.php';
$test_files[] = 'ChildDef/TableTest.php'; $test_files[] = 'AttrDef/CSS/MultipleTest.php';
$test_files[] = 'ChildDef/StrictBlockquoteTest.php'; $test_files[] = 'AttrDef/CSS/NumberTest.php';
$test_files[] = 'GeneratorTest.php'; $test_files[] = 'AttrDef/CSS/PercentageTest.php';
$test_files[] = 'EntityLookupTest.php'; $test_files[] = 'AttrDef/CSS/TextDecorationTest.php';
$test_files[] = 'Strategy/RemoveForeignElementsTest.php'; $test_files[] = 'AttrDef/CSS/URITest.php';
$test_files[] = 'Strategy/MakeWellFormedTest.php';
$test_files[] = 'Strategy/FixNestingTest.php';
$test_files[] = 'Strategy/CompositeTest.php';
$test_files[] = 'Strategy/CoreTest.php';
$test_files[] = 'Strategy/ValidateAttributesTest.php';
$test_files[] = 'AttrDefTest.php';
$test_files[] = 'AttrDef/EnumTest.php';
$test_files[] = 'AttrDef/IDTest.php';
$test_files[] = 'AttrDef/NmtokensTest.php';
$test_files[] = 'AttrDef/TextTest.php';
$test_files[] = 'AttrDef/LangTest.php';
$test_files[] = 'AttrDef/PixelsTest.php';
$test_files[] = 'AttrDef/LengthTest.php';
$test_files[] = 'AttrDef/URITest.php';
$test_files[] = 'AttrDef/CSSTest.php'; $test_files[] = 'AttrDef/CSSTest.php';
$test_files[] = 'AttrDef/CompositeTest.php'; $test_files[] = 'AttrDef/EnumTest.php';
$test_files[] = 'AttrDef/ColorTest.php'; $test_files[] = 'AttrDef/HTML/IDTest.php';
$test_files[] = 'AttrDef/HTML/LengthTest.php';
$test_files[] = 'AttrDef/HTML/MultiLengthTest.php';
$test_files[] = 'AttrDef/HTML/NmtokensTest.php';
$test_files[] = 'AttrDef/HTML/PixelsTest.php';
$test_files[] = 'AttrDef/IntegerTest.php'; $test_files[] = 'AttrDef/IntegerTest.php';
$test_files[] = 'AttrDef/NumberTest.php'; $test_files[] = 'AttrDef/LangTest.php';
$test_files[] = 'AttrDef/CSSLengthTest.php'; $test_files[] = 'AttrDef/TextTest.php';
$test_files[] = 'AttrDef/PercentageTest.php'; $test_files[] = 'AttrDef/URI/Email/SimpleCheckTest.php';
$test_files[] = 'AttrDef/MultipleTest.php'; $test_files[] = 'AttrDef/URI/HostTest.php';
$test_files[] = 'AttrDef/TextDecorationTest.php'; $test_files[] = 'AttrDef/URI/IPv4Test.php';
$test_files[] = 'AttrDef/FontFamilyTest.php'; $test_files[] = 'AttrDef/URI/IPv6Test.php';
$test_files[] = 'AttrDef/HostTest.php'; $test_files[] = 'AttrDef/URITest.php';
$test_files[] = 'AttrDef/IPv4Test.php'; $test_files[] = 'AttrDefTest.php';
$test_files[] = 'AttrDef/IPv6Test.php';
$test_files[] = 'AttrDef/FontTest.php';
$test_files[] = 'AttrDef/BorderTest.php';
$test_files[] = 'AttrDef/ListStyleTest.php';
$test_files[] = 'AttrDef/Email/SimpleCheckTest.php';
$test_files[] = 'AttrDef/CSSURITest.php';
$test_files[] = 'AttrDef/BackgroundPositionTest.php';
$test_files[] = 'AttrDef/BackgroundTest.php';
$test_files[] = 'IDAccumulatorTest.php';
$test_files[] = 'TagTransformTest.php';
$test_files[] = 'AttrTransform/LangTest.php';
$test_files[] = 'AttrTransform/TextAlignTest.php';
$test_files[] = 'AttrTransform/BdoDirTest.php'; $test_files[] = 'AttrTransform/BdoDirTest.php';
$test_files[] = 'AttrTransform/ImgRequiredTest.php'; $test_files[] = 'AttrTransform/ImgRequiredTest.php';
$test_files[] = 'URISchemeRegistryTest.php'; $test_files[] = 'AttrTransform/LangTest.php';
$test_files[] = 'URISchemeTest.php'; $test_files[] = 'AttrTransform/TextAlignTest.php';
$test_files[] = 'EncoderTest.php'; $test_files[] = 'ChildDef/ChameleonTest.php';
$test_files[] = 'EntityParserTest.php'; $test_files[] = 'ChildDef/CustomTest.php';
$test_files[] = 'Test.php'; $test_files[] = 'ChildDef/OptionalTest.php';
$test_files[] = 'ChildDef/RequiredTest.php';
$test_files[] = 'ChildDef/StrictBlockquoteTest.php';
$test_files[] = 'ChildDef/TableTest.php';
$test_files[] = 'ConfigSchemaTest.php';
$test_files[] = 'ConfigTest.php';
$test_files[] = 'ContextTest.php'; $test_files[] = 'ContextTest.php';
$test_files[] = 'PercentEncoderTest.php'; $test_files[] = 'EncoderTest.php';
$test_files[] = 'EntityLookupTest.php';
$test_files[] = 'EntityParserTest.php';
$test_files[] = 'GeneratorTest.php';
$test_files[] = 'IDAccumulatorTest.php';
$test_files[] = 'LanguageFactoryTest.php'; $test_files[] = 'LanguageFactoryTest.php';
$test_files[] = 'LanguageTest.php'; $test_files[] = 'LanguageTest.php';
$test_files[] = 'Lexer/DirectLexTest.php';
$test_files[] = 'LexerTest.php';
$test_files[] = 'PercentEncoderTest.php';
$test_files[] = 'Strategy/CompositeTest.php';
$test_files[] = 'Strategy/CoreTest.php';
$test_files[] = 'Strategy/FixNestingTest.php';
$test_files[] = 'Strategy/MakeWellFormedTest.php';
$test_files[] = 'Strategy/RemoveForeignElementsTest.php';
$test_files[] = 'Strategy/ValidateAttributesTest.php';
$test_files[] = 'TagTransformTest.php';
$test_files[] = 'Test.php';
$test_files[] = 'TokenTest.php';
$test_files[] = 'URISchemeRegistryTest.php';
$test_files[] = 'URISchemeTest.php';
if (version_compare(PHP_VERSION, '5', '>=')) { if (version_compare(PHP_VERSION, '5', '>=')) {
$test_files[] = 'TokenFactoryTest.php'; $test_files[] = 'TokenFactoryTest.php';