From 6651941e3f8147ffece56947bf0dcc4f9997b8bd Mon Sep 17 00:00:00 2001 From: "Edward Z. Yang" Date: Mon, 18 Feb 2008 04:02:12 +0000 Subject: [PATCH] Rename merge-library to generate-standalone. git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1568 48356398-32a2-884e-a903-53898d9a118a --- INSTALL | 2 +- maintenance/generate-standalone.php | 157 ++++++++++++++++++++++++++++ maintenance/merge-library.php | 154 +-------------------------- tests/index.php | 2 +- tests/multitest.php | 2 +- 5 files changed, 163 insertions(+), 154 deletions(-) create mode 100755 maintenance/generate-standalone.php diff --git a/INSTALL b/INSTALL index fb672e82..d01d9e2e 100644 --- a/INSTALL +++ b/INSTALL @@ -159,7 +159,7 @@ Standalone version HTML Purifier has a standalone distribution; you can also generate a standalone file from the full version by running the script - maintenance/merge-library.php . The standalone version has the + maintenance/generate-standalone.php . The standalone version has the benefit of having most of its code in one file, so parsing is much faster and the library is easier to manage. diff --git a/maintenance/generate-standalone.php b/maintenance/generate-standalone.php new file mode 100755 index 00000000..0d60d927 --- /dev/null +++ b/maintenance/generate-standalone.php @@ -0,0 +1,157 @@ +#!/usr/bin/php +mkdirr($base . $dir); + } + file_put_contents($base . $file, ''); +} + +/** + * Copies the contents of a directory to the standalone directory + * @param string $dir Directory to copy + */ +function make_dir_standalone($dir) { + global $FS; + return $FS->copyr($dir, 'standalone/' . $dir); +} + +/** + * Copies the contents of a file to the standalone directory + * @param string $file File to copy + */ +function make_file_standalone($file) { + global $FS; + $FS->mkdirr('standalone/' . dirname($file)); + copy_and_remove_includes($file, 'standalone/' . $file); + return true; +} + +/** + * Copies a file to another location recursively, if it is a PHP file + * remove includes + * @param string $file Original file + * @param string $sfile New location of file + */ +function copy_and_remove_includes($file, $sfile) { + $contents = file_get_contents($file); + if (strrchr($file, '.') === '.php') $contents = replace_includes($contents); + return file_put_contents($sfile, $contents); +} + +/** + * @param $matches preg_replace_callback matches array, where index 1 + * is the filename to include + */ +function replace_includes_callback($matches) { + $file = $matches[1]; + $preserve = array( + // PEAR (external) + 'XML/HTMLSax3.php' => 1 + ); + if (isset($preserve[$file])) { + return $matches[0]; + } + if (isset($GLOBALS['loaded'][$file])) return ''; + $GLOBALS['loaded'][$file] = true; + create_blank($file); + return replace_includes(remove_php_tags(file_get_contents($file))); +} + +shell_exec('php generate-includes.php'); +chdir(dirname(__FILE__) . '/../library/'); +create_blank('HTMLPurifier.php'); + +echo 'Creating full file...'; +$contents = replace_includes(file_get_contents('HTMLPurifier.includes.php')); +$contents = str_replace( + // Note that bootstrap is now inside the standalone file + "define('HTMLPURIFIER_PREFIX', realpath(dirname(__FILE__) . '/..'));", + "define('HTMLPURIFIER_PREFIX', dirname(__FILE__) . '/standalone'); + set_include_path(HTMLPURIFIER_PREFIX . PATH_SEPARATOR . get_include_path());", + $contents +); +file_put_contents('HTMLPurifier.standalone.php', $contents); +echo ' done!' . PHP_EOL; + +echo 'Creating standalone directory...'; +$FS->rmdirr('standalone'); // ensure a clean copy + +// data files +$FS->mkdirr('standalone/HTMLPurifier/DefinitionCache/Serializer'); +make_dir_standalone('HTMLPurifier/EntityLookup'); +make_file_standalone('HTMLPurifier/ConfigSchema/schema.ser'); + +// non-standard inclusion setup +make_dir_standalone('HTMLPurifier/Language'); +make_dir_standalone('HTMLPurifier/Filter'); +make_file_standalone('HTMLPurifier/Lexer/PH5P.php'); +make_file_standalone('HTMLPurifier/Lexer/PEARSax3.php'); + +echo ' done!' . PHP_EOL; diff --git a/maintenance/merge-library.php b/maintenance/merge-library.php index 0d60d927..821cd9d2 100755 --- a/maintenance/merge-library.php +++ b/maintenance/merge-library.php @@ -1,157 +1,9 @@ #!/usr/bin/php mkdirr($base . $dir); - } - file_put_contents($base . $file, ''); -} - -/** - * Copies the contents of a directory to the standalone directory - * @param string $dir Directory to copy - */ -function make_dir_standalone($dir) { - global $FS; - return $FS->copyr($dir, 'standalone/' . $dir); -} - -/** - * Copies the contents of a file to the standalone directory - * @param string $file File to copy - */ -function make_file_standalone($file) { - global $FS; - $FS->mkdirr('standalone/' . dirname($file)); - copy_and_remove_includes($file, 'standalone/' . $file); - return true; -} - -/** - * Copies a file to another location recursively, if it is a PHP file - * remove includes - * @param string $file Original file - * @param string $sfile New location of file - */ -function copy_and_remove_includes($file, $sfile) { - $contents = file_get_contents($file); - if (strrchr($file, '.') === '.php') $contents = replace_includes($contents); - return file_put_contents($sfile, $contents); -} - -/** - * @param $matches preg_replace_callback matches array, where index 1 - * is the filename to include - */ -function replace_includes_callback($matches) { - $file = $matches[1]; - $preserve = array( - // PEAR (external) - 'XML/HTMLSax3.php' => 1 - ); - if (isset($preserve[$file])) { - return $matches[0]; - } - if (isset($GLOBALS['loaded'][$file])) return ''; - $GLOBALS['loaded'][$file] = true; - create_blank($file); - return replace_includes(remove_php_tags(file_get_contents($file))); -} - -shell_exec('php generate-includes.php'); -chdir(dirname(__FILE__) . '/../library/'); -create_blank('HTMLPurifier.php'); - -echo 'Creating full file...'; -$contents = replace_includes(file_get_contents('HTMLPurifier.includes.php')); -$contents = str_replace( - // Note that bootstrap is now inside the standalone file - "define('HTMLPURIFIER_PREFIX', realpath(dirname(__FILE__) . '/..'));", - "define('HTMLPURIFIER_PREFIX', dirname(__FILE__) . '/standalone'); - set_include_path(HTMLPURIFIER_PREFIX . PATH_SEPARATOR . get_include_path());", - $contents -); -file_put_contents('HTMLPurifier.standalone.php', $contents); -echo ' done!' . PHP_EOL; - -echo 'Creating standalone directory...'; -$FS->rmdirr('standalone'); // ensure a clean copy - -// data files -$FS->mkdirr('standalone/HTMLPurifier/DefinitionCache/Serializer'); -make_dir_standalone('HTMLPurifier/EntityLookup'); -make_file_standalone('HTMLPurifier/ConfigSchema/schema.ser'); - -// non-standard inclusion setup -make_dir_standalone('HTMLPurifier/Language'); -make_dir_standalone('HTMLPurifier/Filter'); -make_file_standalone('HTMLPurifier/Lexer/PH5P.php'); -make_file_standalone('HTMLPurifier/Lexer/PEARSax3.php'); - -echo ' done!' . PHP_EOL; +require dirname(__FILE__) . '/generate-standalone.php'; diff --git a/tests/index.php b/tests/index.php index 9c9596a6..83568c20 100755 --- a/tests/index.php +++ b/tests/index.php @@ -71,7 +71,7 @@ require 'HTMLPurifier/Harness.php'; if ($AC['flush']) { shell_exec($AC['php'] . ' ../maintenance/generate-schema-cache.php'); shell_exec($AC['php'] . ' ../maintenance/flush-definition-cache.php'); - shell_exec($AC['php'] . ' ../maintenance/merge-library.php'); + shell_exec($AC['php'] . ' ../maintenance/generate-standalone.php'); } // Now, userland code begins to be executed diff --git a/tests/multitest.php b/tests/multitest.php index a0dade0a..ee6a3fa0 100644 --- a/tests/multitest.php +++ b/tests/multitest.php @@ -47,7 +47,7 @@ $aliases = array( htmlpurifier_parse_args($AC, $aliases); // Calls generate-includes.php automatically -shell_exec($AC['php'] . ' ../maintenance/merge-library.php'); +shell_exec($AC['php'] . ' ../maintenance/generate-standalone.php'); // Not strictly necessary, but its a good idea shell_exec($AC['php'] . ' ../maintenance/generate-schema-cache.php');