Minify a JS string using jshrink.

Paramètres

string $contents: Javascript string.

array $asset: An asset.

bool $log_errors: FALSE to disable logging to watchdog on failure.

Fichier

advagg_js_minify/src/Asset/JsOptimizer.php, line 389

Classe

JsOptimizer
Optimizes a JavaScript asset.

Namespace

Drupal\advagg_js_minify\Asset

Code

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();
}