mirror of
https://github.com/salesagility/SuiteCRM.git
synced 2024-11-24 00:29:35 +00:00
61 lines
1.6 KiB
PHP
61 lines
1.6 KiB
PHP
<?php
|
|
|
|
use JShrink\Minifier;
|
|
|
|
#[\AllowDynamicProperties]
|
|
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.
|
|
*/
|
|
public static 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;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return bool|string
|
|
* @throws Exception
|
|
*/
|
|
protected function jsParser()
|
|
{
|
|
$jshrink = new Minifier;
|
|
|
|
return $jshrink::minify($this->text);
|
|
}
|
|
}
|