2011-07-21 14:18:10 -04:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Combine.php
|
|
|
|
*
|
|
|
|
* This script combines modules into one continuous source file.
|
|
|
|
*/
|
|
|
|
|
|
|
|
//The name of the source folder
|
|
|
|
$folder = "src";
|
|
|
|
|
|
|
|
$files = array();
|
|
|
|
|
|
|
|
//Get all the source files
|
|
|
|
if($dir = opendir($folder))
|
|
|
|
{
|
|
|
|
while(($file = readdir($dir)) !== FALSE)
|
|
|
|
{
|
|
|
|
//Don't grab . and ..
|
|
|
|
if($file !== "." && $file !== "..")
|
|
|
|
{
|
|
|
|
$files[] = $file;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
closedir($dir);
|
|
|
|
}
|
|
|
|
|
|
|
|
//Define files that aren't modules
|
|
|
|
$special_files = array(
|
|
|
|
'core.js',
|
|
|
|
'module_vars.js',
|
|
|
|
);
|
|
|
|
|
|
|
|
//Filter out special files
|
|
|
|
$src_files = array_diff($files, $special_files);
|
|
|
|
|
|
|
|
$syntax_start = array(
|
|
|
|
'//Function to maintain module scope',
|
|
|
|
'(function(){',
|
|
|
|
'',
|
|
|
|
' "use strict";',
|
|
|
|
);
|
|
|
|
|
|
|
|
//Start with the core
|
|
|
|
$new_file = file_get_contents($folder."/core.js") . "\n";
|
|
|
|
|
|
|
|
//Add the opening of the function for the modules
|
|
|
|
$new_file .= "\n// --------------------------------------------------------------------------\n\n".implode("\n", $syntax_start);
|
|
|
|
|
|
|
|
//Add the module-global variables
|
|
|
|
$new_file .= "\n\n".file_get_contents($folder."/module_vars.js")."\n";
|
|
|
|
|
|
|
|
//Add the modules
|
|
|
|
foreach($src_files as $f)
|
|
|
|
{
|
|
|
|
$farray = file($folder."/".$f, FILE_IGNORE_NEW_LINES);
|
|
|
|
|
|
|
|
$flen = count($farray);
|
|
|
|
|
|
|
|
//Indent each module 1 tab, for neatness
|
|
|
|
for($i=0;$i<$flen;$i++)
|
|
|
|
{
|
|
|
|
if($farray[$i] == ""){ continue; }
|
|
|
|
$farray[$i] = "\t".$farray[$i];
|
|
|
|
}
|
|
|
|
|
|
|
|
$module = implode("\n", $farray);
|
|
|
|
|
|
|
|
$new_file .= "\n\t// --------------------------------------------------------------------------\n\n".$module."\n";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//Add the close of the module function
|
|
|
|
$new_file .= "\n}());";
|
|
|
|
|
|
|
|
//Output the full file
|
|
|
|
file_put_contents("kis-custom.js", $new_file);
|
|
|
|
|
2011-08-10 16:30:36 -04:00
|
|
|
//Get a much-minified version from Google's closure compiler
|
|
|
|
$ch = curl_init('http://closure-compiler.appspot.com/compile');
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, 'output_info=compiled_code&output_format=text&compilation_level=SIMPLE_OPTIMIZATIONS&js_code=' . urlencode($new_file));
|
|
|
|
$output = curl_exec($ch);
|
|
|
|
curl_close($ch);
|
|
|
|
|
|
|
|
file_put_contents("kis-min.js", $output);
|
|
|
|
|
|
|
|
|
2011-07-21 14:18:10 -04:00
|
|
|
//Display the output on-screen too
|
|
|
|
echo '<pre>'.htmlspecialchars($new_file).'</pre>';
|