|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
-
- <?php
-
- chdir(dirname(__FILE__));
- require_once 'common.php';
- assertCli();
-
-
-
-
- $GLOBALS['loaded'] = array();
-
-
- class MergeLibraryFSTools extends FSTools
- {
- public function copyable($entry)
- {
-
- if ($entry[0] == '.') {
- return false;
- }
- return true;
- }
- public function copy($source, $dest)
- {
- copy_and_remove_includes($source, $dest);
- }
- }
- $FS = new MergeLibraryFSTools();
-
-
- function replace_includes($text)
- {
-
- return preg_replace_callback(
- "/require(?:_once)? ['\"]([^'\"]+)['\"];/",
- 'replace_includes_callback',
- $text
- );
- }
-
-
- function remove_php_tags($text)
- {
- $text = preg_replace('#// vim:.+#', '', $text);
- return substr($text, 5);
- }
-
-
- function make_dir_standalone($dir)
- {
- global $FS;
- return $FS->copyr($dir, 'standalone/' . $dir);
- }
-
-
- function make_file_standalone($file)
- {
- global $FS;
- $FS->mkdirr('standalone/' . dirname($file));
- copy_and_remove_includes($file, 'standalone/' . $file);
- return true;
- }
-
-
- 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);
- }
-
-
- function replace_includes_callback($matches)
- {
- $file = $matches[1];
- $preserve = array(
-
- 'XML/HTMLSax3.php' => 1
- );
- if (isset($preserve[$file])) {
- return $matches[0];
- }
- if (isset($GLOBALS['loaded'][$file])) return '';
- $GLOBALS['loaded'][$file] = true;
- return replace_includes(remove_php_tags(file_get_contents($file)));
- }
-
- echo 'Generating includes file... ';
- shell_exec('php generate-includes.php');
- echo "done!\n";
-
- chdir(dirname(__FILE__) . '/../library/');
-
- echo 'Creating full file...';
- $contents = replace_includes(file_get_contents('HTMLPurifier.includes.php'));
- $contents = str_replace(
-
- "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');
-
-
- $FS->mkdirr('standalone/HTMLPurifier/DefinitionCache/Serializer');
- make_file_standalone('HTMLPurifier/EntityLookup/entities.ser');
- make_file_standalone('HTMLPurifier/ConfigSchema/schema.ser');
-
-
- make_dir_standalone('HTMLPurifier/ConfigSchema');
- make_dir_standalone('HTMLPurifier/Language');
- make_dir_standalone('HTMLPurifier/Filter');
- make_dir_standalone('HTMLPurifier/Printer');
- make_file_standalone('HTMLPurifier/Printer.php');
- make_file_standalone('HTMLPurifier/Lexer/PH5P.php');
-
- echo ' done!' . PHP_EOL;
-
-
|