Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
50.00% |
1 / 2 |
CRAP | |
83.33% |
10 / 12 |
| JsOptimizer | |
0.00% |
0 / 1 |
|
50.00% |
1 / 2 |
7.23 | |
83.33% |
10 / 12 |
| optimize | |
0.00% |
0 / 1 |
6.29 | |
80.00% |
8 / 10 |
|||
| clean | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Core\Asset\JsOptimizer. | |
| */ | |
| namespace Drupal\Core\Asset; | |
| use Drupal\Component\Utility\Unicode; | |
| /** | |
| * Optimizes a JavaScript asset. | |
| */ | |
| class JsOptimizer implements AssetOptimizerInterface { | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function optimize(array $js_asset) { | |
| if ($js_asset['type'] !== 'file') { | |
| throw new \Exception('Only file JavaScript assets can be optimized.'); | |
| } | |
| if ($js_asset['type'] === 'file' && !$js_asset['preprocess']) { | |
| throw new \Exception('Only file JavaScript assets with preprocessing enabled can be optimized.'); | |
| } | |
| // If a BOM is found, convert the file to UTF-8, then use substr() to | |
| // remove the BOM from the result. | |
| $data = file_get_contents($js_asset['data']); | |
| if ($encoding = (Unicode::encodingFromBOM($data))) { | |
| $data = Unicode::substr(Unicode::convertToUtf8($data, $encoding), 1); | |
| } | |
| // If no BOM is found, check for the charset attribute. | |
| elseif (isset($js_asset['attributes']['charset'])) { | |
| $data = Unicode::convertToUtf8($data, $js_asset['attributes']['charset']); | |
| } | |
| // No-op optimizer: no optimizations are applied to JavaScript assets. | |
| return $data; | |
| } | |
| /** | |
| * Processes the contents of a javascript asset for cleanup. | |
| * | |
| * @param string $contents | |
| * The contents of the javascript asset. | |
| * | |
| * @return string | |
| * Contents of the javascript asset. | |
| */ | |
| public function clean($contents) { | |
| // Remove JS source and source mapping urls or these may cause 404 errors. | |
| $contents = preg_replace('/\/\/(#|@)\s(sourceURL|sourceMappingURL)=\s*(\S*?)\s*$/m', '', $contents); | |
| return $contents; | |
| } | |
| } |