Add test case for removing empty list items.
[htmlpurifier/darkodev.git] / maintenance / old-extract-schema.php
blob514a08dd9316c07c252bfde16a18fefb22646bb8
1 #!/usr/bin/php
2 <?php
4 chdir(dirname(__FILE__));
5 require_once 'common.php';
6 assertCli();
8 echo "Please do not run this script. It is here for historical purposes only.";
9 exit;
11 /**
12 * @file
13 * Extracts all definitions inside a configuration schema
14 * (HTMLPurifier_ConfigSchema) and exports them as plain text files.
16 * @todo Extract version numbers.
19 define('HTMLPURIFIER_SCHEMA_STRICT', true); // description data needs to be collected
20 require_once dirname(__FILE__) . '/../library/HTMLPurifier.auto.php';
22 // We need includes to ensure all HTMLPurifier_ConfigSchema calls are
23 // performed.
24 require_once 'HTMLPurifier.includes.php';
26 // Also, these extra files will be necessary.
27 require_once 'HTMLPurifier/Filter/ExtractStyleBlocks.php';
29 /**
30 * Takes a hash and saves its contents to library/HTMLPurifier/ConfigSchema/
32 function saveHash($hash)
34 if ($hash === false) return;
35 $dir = realpath(dirname(__FILE__) . '/../library/HTMLPurifier/ConfigSchema');
36 $name = $hash['ID'] . '.txt';
37 $file = $dir . '/' . $name;
38 if (file_exists($file)) {
39 trigger_error("File already exists; skipped $name");
40 return;
42 $file = new FSTools_File($file);
43 $file->open('w');
44 $multiline = false;
45 foreach ($hash as $key => $value) {
46 $multiline = $multiline || (strpos($value, "\n") !== false);
47 if ($multiline) {
48 $file->put("--$key--" . PHP_EOL);
49 $file->put(str_replace("\n", PHP_EOL, $value) . PHP_EOL);
50 } else {
51 if ($key == 'ID') {
52 $file->put("$value" . PHP_EOL);
53 } else {
54 $file->put("$key: $value" . PHP_EOL);
58 $file->close();
61 $schema = HTMLPurifier_ConfigSchema::instance();
62 $adapter = new HTMLPurifier_ConfigSchema_StringHashReverseAdapter($schema);
64 foreach ($schema->info as $ns => $ns_array) {
65 saveHash($adapter->get($ns));
66 foreach ($ns_array as $dir => $x) {
67 saveHash($adapter->get($ns, $dir));
71 // vim: et sw=4 sts=4