This repository has been archived by the owner on Jun 24, 2021. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
chicpro
committed
Oct 20, 2015
1 parent
deb4689
commit 1bf8190
Showing
144 changed files
with
31,041 additions
and
25,389 deletions.
There are no files selected for viewing
39,512 changes: 21,887 additions & 17,625 deletions
39,512
plugin/htmlpurifier/HTMLPurifier.standalone.php
Large diffs are not rendered by default.
Oops, something went wrong.
92 changes: 48 additions & 44 deletions
92
plugin/htmlpurifier/standalone/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,44 +1,48 @@ | ||
<?php | ||
|
||
/** | ||
* Converts HTMLPurifier_ConfigSchema_Interchange to our runtime | ||
* representation used to perform checks on user configuration. | ||
*/ | ||
class HTMLPurifier_ConfigSchema_Builder_ConfigSchema | ||
{ | ||
|
||
public function build($interchange) { | ||
$schema = new HTMLPurifier_ConfigSchema(); | ||
foreach ($interchange->directives as $d) { | ||
$schema->add( | ||
$d->id->key, | ||
$d->default, | ||
$d->type, | ||
$d->typeAllowsNull | ||
); | ||
if ($d->allowed !== null) { | ||
$schema->addAllowedValues( | ||
$d->id->key, | ||
$d->allowed | ||
); | ||
} | ||
foreach ($d->aliases as $alias) { | ||
$schema->addAlias( | ||
$alias->key, | ||
$d->id->key | ||
); | ||
} | ||
if ($d->valueAliases !== null) { | ||
$schema->addValueAliases( | ||
$d->id->key, | ||
$d->valueAliases | ||
); | ||
} | ||
} | ||
$schema->postProcess(); | ||
return $schema; | ||
} | ||
|
||
} | ||
|
||
// vim: et sw=4 sts=4 | ||
<?php | ||
|
||
/** | ||
* Converts HTMLPurifier_ConfigSchema_Interchange to our runtime | ||
* representation used to perform checks on user configuration. | ||
*/ | ||
class HTMLPurifier_ConfigSchema_Builder_ConfigSchema | ||
{ | ||
|
||
/** | ||
* @param HTMLPurifier_ConfigSchema_Interchange $interchange | ||
* @return HTMLPurifier_ConfigSchema | ||
*/ | ||
public function build($interchange) | ||
{ | ||
$schema = new HTMLPurifier_ConfigSchema(); | ||
foreach ($interchange->directives as $d) { | ||
$schema->add( | ||
$d->id->key, | ||
$d->default, | ||
$d->type, | ||
$d->typeAllowsNull | ||
); | ||
if ($d->allowed !== null) { | ||
$schema->addAllowedValues( | ||
$d->id->key, | ||
$d->allowed | ||
); | ||
} | ||
foreach ($d->aliases as $alias) { | ||
$schema->addAlias( | ||
$alias->key, | ||
$d->id->key | ||
); | ||
} | ||
if ($d->valueAliases !== null) { | ||
$schema->addValueAliases( | ||
$d->id->key, | ||
$d->valueAliases | ||
); | ||
} | ||
} | ||
$schema->postProcess(); | ||
return $schema; | ||
} | ||
} | ||
|
||
// vim: et sw=4 sts=4 |
250 changes: 144 additions & 106 deletions
250
plugin/htmlpurifier/standalone/HTMLPurifier/ConfigSchema/Builder/Xml.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,106 +1,144 @@ | ||
<?php | ||
|
||
/** | ||
* Converts HTMLPurifier_ConfigSchema_Interchange to an XML format, | ||
* which can be further processed to generate documentation. | ||
*/ | ||
class HTMLPurifier_ConfigSchema_Builder_Xml extends XMLWriter | ||
{ | ||
|
||
protected $interchange; | ||
private $namespace; | ||
|
||
protected function writeHTMLDiv($html) { | ||
$this->startElement('div'); | ||
|
||
$purifier = HTMLPurifier::getInstance(); | ||
$html = $purifier->purify($html); | ||
$this->writeAttribute('xmlns', 'http://www.w3.org/1999/xhtml'); | ||
$this->writeRaw($html); | ||
|
||
$this->endElement(); // div | ||
} | ||
|
||
protected function export($var) { | ||
if ($var === array()) return 'array()'; | ||
return var_export($var, true); | ||
} | ||
|
||
public function build($interchange) { | ||
// global access, only use as last resort | ||
$this->interchange = $interchange; | ||
|
||
$this->setIndent(true); | ||
$this->startDocument('1.0', 'UTF-8'); | ||
$this->startElement('configdoc'); | ||
$this->writeElement('title', $interchange->name); | ||
|
||
foreach ($interchange->directives as $directive) { | ||
$this->buildDirective($directive); | ||
} | ||
|
||
if ($this->namespace) $this->endElement(); // namespace | ||
|
||
$this->endElement(); // configdoc | ||
$this->flush(); | ||
} | ||
|
||
public function buildDirective($directive) { | ||
|
||
// Kludge, although I suppose having a notion of a "root namespace" | ||
// certainly makes things look nicer when documentation is built. | ||
// Depends on things being sorted. | ||
if (!$this->namespace || $this->namespace !== $directive->id->getRootNamespace()) { | ||
if ($this->namespace) $this->endElement(); // namespace | ||
$this->namespace = $directive->id->getRootNamespace(); | ||
$this->startElement('namespace'); | ||
$this->writeAttribute('id', $this->namespace); | ||
$this->writeElement('name', $this->namespace); | ||
} | ||
|
||
$this->startElement('directive'); | ||
$this->writeAttribute('id', $directive->id->toString()); | ||
|
||
$this->writeElement('name', $directive->id->getDirective()); | ||
|
||
$this->startElement('aliases'); | ||
foreach ($directive->aliases as $alias) $this->writeElement('alias', $alias->toString()); | ||
$this->endElement(); // aliases | ||
|
||
$this->startElement('constraints'); | ||
if ($directive->version) $this->writeElement('version', $directive->version); | ||
$this->startElement('type'); | ||
if ($directive->typeAllowsNull) $this->writeAttribute('allow-null', 'yes'); | ||
$this->text($directive->type); | ||
$this->endElement(); // type | ||
if ($directive->allowed) { | ||
$this->startElement('allowed'); | ||
foreach ($directive->allowed as $value => $x) $this->writeElement('value', $value); | ||
$this->endElement(); // allowed | ||
} | ||
$this->writeElement('default', $this->export($directive->default)); | ||
$this->writeAttribute('xml:space', 'preserve'); | ||
if ($directive->external) { | ||
$this->startElement('external'); | ||
foreach ($directive->external as $project) $this->writeElement('project', $project); | ||
$this->endElement(); | ||
} | ||
$this->endElement(); // constraints | ||
|
||
if ($directive->deprecatedVersion) { | ||
$this->startElement('deprecated'); | ||
$this->writeElement('version', $directive->deprecatedVersion); | ||
$this->writeElement('use', $directive->deprecatedUse->toString()); | ||
$this->endElement(); // deprecated | ||
} | ||
|
||
$this->startElement('description'); | ||
$this->writeHTMLDiv($directive->description); | ||
$this->endElement(); // description | ||
|
||
$this->endElement(); // directive | ||
} | ||
|
||
} | ||
|
||
// vim: et sw=4 sts=4 | ||
<?php | ||
|
||
/** | ||
* Converts HTMLPurifier_ConfigSchema_Interchange to an XML format, | ||
* which can be further processed to generate documentation. | ||
*/ | ||
class HTMLPurifier_ConfigSchema_Builder_Xml extends XMLWriter | ||
{ | ||
|
||
/** | ||
* @type HTMLPurifier_ConfigSchema_Interchange | ||
*/ | ||
protected $interchange; | ||
|
||
/** | ||
* @type string | ||
*/ | ||
private $namespace; | ||
|
||
/** | ||
* @param string $html | ||
*/ | ||
protected function writeHTMLDiv($html) | ||
{ | ||
$this->startElement('div'); | ||
|
||
$purifier = HTMLPurifier::getInstance(); | ||
$html = $purifier->purify($html); | ||
$this->writeAttribute('xmlns', 'http://www.w3.org/1999/xhtml'); | ||
$this->writeRaw($html); | ||
|
||
$this->endElement(); // div | ||
} | ||
|
||
/** | ||
* @param mixed $var | ||
* @return string | ||
*/ | ||
protected function export($var) | ||
{ | ||
if ($var === array()) { | ||
return 'array()'; | ||
} | ||
return var_export($var, true); | ||
} | ||
|
||
/** | ||
* @param HTMLPurifier_ConfigSchema_Interchange $interchange | ||
*/ | ||
public function build($interchange) | ||
{ | ||
// global access, only use as last resort | ||
$this->interchange = $interchange; | ||
|
||
$this->setIndent(true); | ||
$this->startDocument('1.0', 'UTF-8'); | ||
$this->startElement('configdoc'); | ||
$this->writeElement('title', $interchange->name); | ||
|
||
foreach ($interchange->directives as $directive) { | ||
$this->buildDirective($directive); | ||
} | ||
|
||
if ($this->namespace) { | ||
$this->endElement(); | ||
} // namespace | ||
|
||
$this->endElement(); // configdoc | ||
$this->flush(); | ||
} | ||
|
||
/** | ||
* @param HTMLPurifier_ConfigSchema_Interchange_Directive $directive | ||
*/ | ||
public function buildDirective($directive) | ||
{ | ||
// Kludge, although I suppose having a notion of a "root namespace" | ||
// certainly makes things look nicer when documentation is built. | ||
// Depends on things being sorted. | ||
if (!$this->namespace || $this->namespace !== $directive->id->getRootNamespace()) { | ||
if ($this->namespace) { | ||
$this->endElement(); | ||
} // namespace | ||
$this->namespace = $directive->id->getRootNamespace(); | ||
$this->startElement('namespace'); | ||
$this->writeAttribute('id', $this->namespace); | ||
$this->writeElement('name', $this->namespace); | ||
} | ||
|
||
$this->startElement('directive'); | ||
$this->writeAttribute('id', $directive->id->toString()); | ||
|
||
$this->writeElement('name', $directive->id->getDirective()); | ||
|
||
$this->startElement('aliases'); | ||
foreach ($directive->aliases as $alias) { | ||
$this->writeElement('alias', $alias->toString()); | ||
} | ||
$this->endElement(); // aliases | ||
|
||
$this->startElement('constraints'); | ||
if ($directive->version) { | ||
$this->writeElement('version', $directive->version); | ||
} | ||
$this->startElement('type'); | ||
if ($directive->typeAllowsNull) { | ||
$this->writeAttribute('allow-null', 'yes'); | ||
} | ||
$this->text($directive->type); | ||
$this->endElement(); // type | ||
if ($directive->allowed) { | ||
$this->startElement('allowed'); | ||
foreach ($directive->allowed as $value => $x) { | ||
$this->writeElement('value', $value); | ||
} | ||
$this->endElement(); // allowed | ||
} | ||
$this->writeElement('default', $this->export($directive->default)); | ||
$this->writeAttribute('xml:space', 'preserve'); | ||
if ($directive->external) { | ||
$this->startElement('external'); | ||
foreach ($directive->external as $project) { | ||
$this->writeElement('project', $project); | ||
} | ||
$this->endElement(); | ||
} | ||
$this->endElement(); // constraints | ||
|
||
if ($directive->deprecatedVersion) { | ||
$this->startElement('deprecated'); | ||
$this->writeElement('version', $directive->deprecatedVersion); | ||
$this->writeElement('use', $directive->deprecatedUse->toString()); | ||
$this->endElement(); // deprecated | ||
} | ||
|
||
$this->startElement('description'); | ||
$this->writeHTMLDiv($directive->description); | ||
$this->endElement(); // description | ||
|
||
$this->endElement(); // directive | ||
} | ||
} | ||
|
||
// vim: et sw=4 sts=4 |
22 changes: 11 additions & 11 deletions
22
plugin/htmlpurifier/standalone/HTMLPurifier/ConfigSchema/Exception.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,11 @@ | ||
<?php | ||
|
||
/** | ||
* Exceptions related to configuration schema | ||
*/ | ||
class HTMLPurifier_ConfigSchema_Exception extends HTMLPurifier_Exception | ||
{ | ||
|
||
} | ||
|
||
// vim: et sw=4 sts=4 | ||
<?php | ||
|
||
/** | ||
* Exceptions related to configuration schema | ||
*/ | ||
class HTMLPurifier_ConfigSchema_Exception extends HTMLPurifier_Exception | ||
{ | ||
|
||
} | ||
|
||
// vim: et sw=4 sts=4 |
Oops, something went wrong.