salesagility_SuiteCRM/jssource/SugarMin.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);
}
}