public function JsOptimizer::minifyJshrink in Advanced CSS/JS Aggregation 8.2
Minify a JS string using jshrink.
Parameters
string $contents: Javascript string.
array $asset: An asset.
bool $log_errors: FALSE to disable logging to watchdog on failure.
File
- advagg_js_minify/
src/ Asset/ JsOptimizer.php, line 389
Class
- JsOptimizer
- Optimizes a JavaScript asset.
Namespace
Drupal\advagg_js_minify\AssetCode
public function minifyJshrink(&$contents, array $asset, $log_errors = TRUE) {
$contents_before = $contents;
// Only include jshrink.inc if the JShrink\Minifier class doesn't exist.
if (!class_exists('\\JShrink\\Minifier')) {
include drupal_get_path('module', 'advagg_js_minify') . '/jshrink.inc';
$nesting_level = ini_get('xdebug.max_nesting_level');
if (!empty($nesting_level) && $nesting_level < 200) {
ini_set('xdebug.max_nesting_level', 200);
}
}
ob_start();
try {
// JShrink the contents of the aggregated file.
$contents = \JShrink\Minifier::minify($contents, [
'flaggedComments' => FALSE,
]);
// Capture any output from JShrink.
$error = trim(ob_get_contents());
if (!empty($error)) {
throw new \Exception($error);
}
} catch (\Exception $e) {
// Log the JShrink exception and rollback to uncompressed content.
if ($log_errors) {
$this->logger
->warning($e
->getMessage() . '<pre>' . $contents_before . '</pre>', []);
}
$contents = $contents_before;
}
ob_end_clean();
}