/** * @param array $files * File paths. * @return string */ public function digestJs($files) { $scripts = array(); foreach ($files as $file) { $scripts[] = file_get_contents($file); } $scripts = \CRM_Utils_JS::dedupeClosures($scripts, array('angular', '$', '_'), array('angular', 'CRM.$', 'CRM._')); // This impl of stripComments currently adds 10-20ms and cuts ~7% return \CRM_Utils_JS::stripComments(implode("\n", $scripts)); }
/** * @param array $scripts * @param string $expectedOutput * @dataProvider dedupeClosureExamples */ public function testDedupeClosure($scripts, $expectedOutput) { $actualOutput = CRM_Utils_JS::dedupeClosures($scripts, array('angular', '$', '_'), array('angular', 'CRM.$', 'CRM._')); $this->assertEquals($expectedOutput, implode("", $actualOutput)); }