mirror of
https://github.com/salesagility/SuiteCRM.git
synced 2025-01-11 20:08:27 +00:00
48 lines
1.5 KiB
PHP
Executable file
48 lines
1.5 KiB
PHP
Executable file
<?php
|
|
|
|
class SugarMin {
|
|
|
|
/**
|
|
* jsParser will take javascript source code and minify it.
|
|
*
|
|
* Note: There is a lot of redundant code since both passes
|
|
* operate similarly but with slight differences. It will probably
|
|
* be a good idea to refactor the code at a later point when it is stable.
|
|
*
|
|
* JSParser will perform 3 passes on the code. Pass 1 takes care of single
|
|
* line and mult-line comments. Pass 2 performs some sanitation on each of the lines
|
|
* and pass 3 works on stripping out unnecessary spaces.
|
|
*
|
|
* @param string $js
|
|
* @param string $currentOptions
|
|
* @return void
|
|
*/
|
|
private function __construct($text, $compression) {
|
|
$this->text = trim($text)."\n";
|
|
$this->compression = $compression;
|
|
}
|
|
|
|
/**
|
|
* Entry point function to minify javascript.
|
|
*
|
|
* @param string $js Javascript source code as a string.
|
|
* @param string $compression Compression option. {light, deep}.
|
|
* @return string $output Output javascript code as a string.
|
|
*/
|
|
static public function minify($js, $compression = 'light') {
|
|
try {
|
|
$me = new SugarMin($js, $compression);
|
|
$output = $me->jsParser();
|
|
|
|
return $output;
|
|
} catch (Exception $e) {
|
|
// Exception handling is left up to the implementer.
|
|
throw $e;
|
|
}
|
|
}
|
|
|
|
protected function jsParser() {
|
|
require_once('jssource/Minifier.php');
|
|
return Minifier::minify($this->text);
|
|
}
|
|
}
|