1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
<?php
// Set up our constants
define('SP_PATH', dirname(dirname(__FILE__)));
define('COMPILED', SP_PATH . DIRECTORY_SEPARATOR . 'SimplePie.compiled.php');
function remove_header($contents)
{
$tokens = token_get_all($contents);
$stripped_source = '';
$stripped_doc = false;
$stripped_open = false;
foreach ($tokens as $value)
{
if (is_string($value))
{
$stripped_source .= "{$value}";
continue;
}
switch ($value[0])
{
case T_DOC_COMMENT:
if (!$stripped_doc)
{
$stripped_doc = true;
continue 2;
}
break;
case T_OPEN_TAG:
if (!$stripped_open)
{
$stripped_open = true;
continue 2;
}
break;
}
$stripped_source .= "{$value[1]}";
}
return $stripped_source;
}
// Start with the header
$compiled = file_get_contents(SP_PATH . '/build/header.txt');
$compiled .= "\n";
// Add the base class
$contents = file_get_contents(SP_PATH . '/library/SimplePie.php');
$compiled .= remove_header($contents) . "\n";
// Add all the files in the SimplePie directory
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(SP_PATH . '/library/SimplePie', FilesystemIterator::SKIP_DOTS));
$file_paths = array();
foreach($files as $file_path => $info)
{
$file_paths[] = $file_path;
}
natsort($file_paths);
foreach($file_paths as $file_path)
{
$contents = file_get_contents($file_path);
$compiled .= remove_header($contents) . "\n";
}
// Strip excess whitespace
$compiled = preg_replace("#\n\n\n+#", "\n\n", $compiled);
// Hardcode the build
$compiled = str_replace(
"define('SIMPLEPIE_BUILD', gmdate('YmdHis', SimplePie_Misc::get_build()))",
"define('SIMPLEPIE_BUILD', '" . gmdate('YmdHis', strtotime(`dpkg-parsechangelog --show-field Date`)) . "')",
$compiled
);
// Finally, save
file_put_contents(COMPILED, $compiled);
|