mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-12-22 08:21:52 +00:00
Reorganize configdoc, but it's still broken.
git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1577 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
parent
002fe649f7
commit
a2d044f58d
@ -15,17 +15,18 @@ TODO:
|
||||
- add blurbs to ToC
|
||||
*/
|
||||
|
||||
if (version_compare('5', PHP_VERSION, '>')) exit('Requires PHP 5 or higher.');
|
||||
error_reporting(E_ALL); // probably not possible to use E_STRICT
|
||||
if (version_compare(PHP_VERSION, '5.2.0', '<')) exit('PHP 5.2.0 or greater required.');
|
||||
error_reporting(E_ALL | E_STRICT);
|
||||
|
||||
define('HTMLPURIFIER_SCHEMA_STRICT', true); // description data needs to be collected
|
||||
echo 'Currently broken!';
|
||||
exit;
|
||||
|
||||
// load dual-libraries
|
||||
set_include_path(realpath('../library') . PATH_SEPARATOR . get_include_path() );
|
||||
require_once '../library/HTMLPurifier.includes.php';
|
||||
require_once 'library/ConfigDoc.auto.php';
|
||||
require_once '../extras/HTMLPurifierExtras.auto.php';
|
||||
require_once '../library/HTMLPurifier.auto.php';
|
||||
|
||||
$purifier = HTMLPurifier::getInstance(array(
|
||||
// setup HTML Purifier singleton
|
||||
HTMLPurifier::getInstance(array(
|
||||
'AutoFormat.PurifierLinkify' => true
|
||||
));
|
||||
|
||||
@ -34,11 +35,16 @@ $style = 'plain'; // use $_GET in the future
|
||||
$configdoc = new ConfigDoc();
|
||||
$output = $configdoc->generate($schema, $style);
|
||||
|
||||
if (!$output) {
|
||||
echo "Error in generating files\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// write out
|
||||
file_put_contents("$style.html", $output);
|
||||
|
||||
if (php_sapi_name() != 'cli') {
|
||||
// output = instant feedback
|
||||
// output (instant feedback if it's a browser)
|
||||
echo $output;
|
||||
} else {
|
||||
echo 'Files generated successfully.';
|
||||
|
@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This is a stub include that automatically configures the include path.
|
||||
*/
|
||||
|
||||
set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path() );
|
||||
require_once 'ConfigDoc.php';
|
||||
|
@ -1,31 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The XMLSerializer hierarchy of classes consist of classes that take
|
||||
* objects and serialize them into XML, specifically DOM, form; this
|
||||
* super-class contains convenience functions for those classes.
|
||||
*/
|
||||
class ConfigDoc_XMLSerializer
|
||||
{
|
||||
|
||||
/**
|
||||
* Appends a div containing HTML into a node
|
||||
* @param $document Base document node belongs to
|
||||
* @param $node Node to append to
|
||||
* @param $html HTML to place inside div to append
|
||||
* @todo Place this directly in DOMNode, using registerNodeClass to
|
||||
* override.
|
||||
*/
|
||||
protected function appendHTMLDiv($document, $node, $html) {
|
||||
$purifier = HTMLPurifier::getInstance();
|
||||
$html = $purifier->purify($html);
|
||||
$dom_html = $document->createDocumentFragment();
|
||||
$dom_html->appendXML($html);
|
||||
$dom_div = $document->createElement('div');
|
||||
$dom_div->setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');
|
||||
$dom_div->appendChild($dom_html);
|
||||
$node->appendChild($dom_div);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,9 +1,5 @@
|
||||
<?php
|
||||
|
||||
require_once 'ConfigDoc/HTMLXSLTProcessor.php';
|
||||
require_once 'ConfigDoc/XMLSerializer/Types.php';
|
||||
require_once 'ConfigDoc/XMLSerializer/ConfigSchema.php';
|
||||
|
||||
/**
|
||||
* Facade class for configuration documentation system
|
||||
*/
|
13
extras/ConfigDoc/DOM/Document.php
Normal file
13
extras/ConfigDoc/DOM/Document.php
Normal file
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
class ConfigDoc_DOM_Document extends DOMDocument
|
||||
{
|
||||
/**
|
||||
* Register our classes
|
||||
*/
|
||||
public function __construct($version = "1.0", $encoding = "UTF-8") {
|
||||
parent::__construct($version, $encoding);
|
||||
parent::registerNodeClass('DOMDocument', 'ConfigDoc_DOM_Document');
|
||||
parent::registerNodeClass('DOMElement', 'ConfigDoc_DOM_Element');
|
||||
}
|
||||
}
|
27
extras/ConfigDoc/DOM/Element.php
Normal file
27
extras/ConfigDoc/DOM/Element.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
class ConfigDoc_DOM_Element extends DOMElement
|
||||
{
|
||||
|
||||
/**
|
||||
* Appends an HTML div to this node
|
||||
*/
|
||||
public function appendHTMLDiv($html) {
|
||||
$this->appendChild($this->generateHTMLDiv($html));
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates an HTML div that can contain arbitrary markup
|
||||
*/
|
||||
protected function generateHTMLDiv($html) {
|
||||
$purifier = HTMLPurifier::getInstance();
|
||||
$html = $purifier->purify($html);
|
||||
$dom_html = $this->ownerDocument->createDocumentFragment();
|
||||
$dom_html->appendXML($html);
|
||||
$dom_div = $this->ownerDocument->createElement('div');
|
||||
$dom_div->setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');
|
||||
$dom_div->appendChild($dom_html);
|
||||
return $dom_div;
|
||||
}
|
||||
|
||||
}
|
@ -1,8 +1,7 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Special XSLT processor specifically for HTML documents. Loosely
|
||||
* based off of XSLTProcessor, but does not inherit from that class
|
||||
* Decorator/extender XSLT processor specifically for HTML documents.
|
||||
*/
|
||||
class ConfigDoc_HTMLXSLTProcessor
|
||||
{
|
||||
@ -12,14 +11,13 @@ class ConfigDoc_HTMLXSLTProcessor
|
||||
*/
|
||||
protected $xsltProcessor;
|
||||
|
||||
public function __construct() {
|
||||
$this->xsltProcessor = new XSLTProcessor();
|
||||
public function __construct($proc = false) {
|
||||
if ($proc === false) $proc = new XSLTProcessor();
|
||||
$this->xsltProcessor = $proc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Imports stylesheet for processor to use
|
||||
* @param $xsl XSLT DOM tree, or filename of the XSL transformation
|
||||
* @return bool Success?
|
||||
* @note Allows a string $xsl filename to be passed
|
||||
*/
|
||||
public function importStylesheet($xsl) {
|
||||
if (is_string($xsl)) {
|
||||
@ -71,5 +69,12 @@ class ConfigDoc_HTMLXSLTProcessor
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Forward any other calls to the XSLT processor
|
||||
*/
|
||||
public function __call($name, $arguments) {
|
||||
call_user_func_array(array($this->xsltProcessor, $name), $arguments);
|
||||
}
|
||||
|
||||
}
|
||||
|
11
extras/ConfigDoc/XMLSerializer.php
Normal file
11
extras/ConfigDoc/XMLSerializer.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The XMLSerializer hierarchy of classes consist of classes that take
|
||||
* objects and convert them to XML form.
|
||||
*/
|
||||
class ConfigDoc_XMLSerializer
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -1,7 +1,5 @@
|
||||
<?php
|
||||
|
||||
require_once 'ConfigDoc/XMLSerializer.php';
|
||||
|
||||
class ConfigDoc_XMLSerializer_ConfigSchema extends ConfigDoc_XMLSerializer
|
||||
{
|
||||
|
@ -1,7 +1,5 @@
|
||||
<?php
|
||||
|
||||
require_once 'ConfigDoc/XMLSerializer.php';
|
||||
|
||||
class ConfigDoc_XMLSerializer_Types extends ConfigDoc_XMLSerializer
|
||||
{
|
||||
|
@ -3,6 +3,11 @@
|
||||
/**
|
||||
* @file
|
||||
* Convenience file that registers autoload handler for HTML Purifier.
|
||||
*
|
||||
* @warning
|
||||
* This autoloader does not contain the compatibility code seen in
|
||||
* HTMLPurifier_Bootstrap; the user is expected to make any necessary
|
||||
* changes to use this library.
|
||||
*/
|
||||
|
||||
if (function_exists('spl_autoload_register')) {
|
||||
|
@ -16,7 +16,8 @@ class HTMLPurifierExtras
|
||||
|
||||
public static function getPath($class) {
|
||||
if (
|
||||
strncmp('FSTools', $class, 7) !== 0
|
||||
strncmp('FSTools', $class, 7) !== 0 &&
|
||||
strncmp('ConfigDoc', $class, 9) !== 0
|
||||
) return false;
|
||||
// Custom implementations can go here
|
||||
// Standard implementation:
|
||||
|
11
tests/ConfigDoc/DOM/DocumentTest.php
Normal file
11
tests/ConfigDoc/DOM/DocumentTest.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
class ConfigDoc_DOM_DocumentTest extends UnitTestCase
|
||||
{
|
||||
|
||||
function testOverload() {
|
||||
$dom = new ConfigDoc_DOM_Document();
|
||||
$this->assertIsA($dom->createElement('a'), 'ConfigDoc_DOM_Element');
|
||||
}
|
||||
|
||||
}
|
@ -134,7 +134,9 @@ if ($csstidy_location) {
|
||||
|
||||
// ConfigDoc auxiliary library
|
||||
|
||||
// ... none yet
|
||||
if (version_compare(PHP_VERSION, '5.2', '>=')) {
|
||||
$test_files[] = 'ConfigDoc/DOM/DocumentTest.php';
|
||||
}
|
||||
|
||||
// FSTools auxiliary library
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user