From 277a15248f4e1e457974a2ed74cebc5de3a26ce3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Hojtsy?= Date: Wed, 19 Dec 2007 17:19:50 +0000 Subject: #183940 by bjaspan, keith.smith: remove broken JS compression, but leave JS aggregation; update help text to that effect --- includes/common.inc | 226 +--------------------------------------------------- 1 file changed, 1 insertion(+), 225 deletions(-) (limited to 'includes') diff --git a/includes/common.inc b/includes/common.inc index 5f131ae00..82de30b39 100644 --- a/includes/common.inc +++ b/includes/common.inc @@ -2216,7 +2216,7 @@ function drupal_build_js_cache($files, $filename) { foreach ($files as $path => $info) { if ($info['preprocess']) { // Append a ';' after each JS file to prevent them from running together. - $contents .= _drupal_compress_js(file_get_contents($path) .';'); + $contents .= file_get_contents($path) .';'; } } @@ -2227,230 +2227,6 @@ function drupal_build_js_cache($files, $filename) { return $jspath .'/'. $filename; } -/** - * Perform basic code compression for JavaScript. - * - * Helper function for drupal_pack_js(). - */ -function _drupal_compress_js($script) { - $regexps = array( - // Protect strings. - array('/\'[^\'\\n\\r]*\'/', '$0'), - array('/"[^"\\n\\r]*"/', '$0'), - // Remove comments. - array('/\\/\\/[^\\n\\r]*[\\n\\r]/', ''), - array('/\\/\\*[^*]*\\*+((?:[^\\/][^*]*\\*+)*)\\//', ''), - // Protect regular expressions - array('/\\s+(\\/[^\\/\\n\\r\\*][^\\/\\n\\r]*\\/g?i?)/', '$1'), - array('/[^\\w\\x24\\/\'"*)\\?:]\\/[^\\/\\n\\r\\*][^\\/\\n\\r]*\\/g?i?/', '$0'), - // Protect spaces between keywords and variables - array('/(?<=[A-Za-z0-9_$])\\s+(?=[A-Za-z0-9_$])/', ' '), - array('/([+\\-])\\s+([+\\-])/', '$1 $2'), - // Remove all other white-space - array('/\\s+/', ''), - ); - $script = _packer_apply($script, $regexps, TRUE); - - return $script; -} - -/** - * Multi-regexp replacements. - * - * Allows you to perform multiple regular expression replacements at once, - * without overlapping matches. - * - * @param $script - * The text to modify. - * @param $regexps - * An array of replacement instructions, each being a tuple with values: - * - A stand-alone regular expression without modifiers (slash-delimited) - * - A replacement expression, which may include placeholders. - * @param $escape - * Whether to ignore slash-escaped characters for matching. This allows you - * to match e.g. quote-delimited strings with /'[^']+'/ without having to - * worry about \'. Otherwise, you'd have to mess with look-aheads and - * look-behinds to match these. - */ -function _packer_apply($script, $regexps, $escape = FALSE) { - - $_regexps = array(); - // Process all regexps - foreach ($regexps as $regexp) { - list($expression, $replacement) = $regexp; - - // Count the number of matching groups (including the whole). - $length = 1 + preg_match_all('/(? 'backreferences', - 'data' => array( - 'replacement' => $replacement, - 'length' => $length, - ) - ); - } - } - } - // Store the modified expression. - if (!empty($expression)) { - $_regexps[] = array($expression, $replacement, $length); - } - else { - $_regexps[] = array('/^$/', $replacement, $length); - } - } - - // Execute the global replacement - - // Build one mega-regexp out of the smaller ones. - $regexp = '/'; - foreach ($_regexps as $_regexp) { - list($expression) = $_regexp; - $regexp .= '('. substr($expression, 1, -1) .')|'; - } - $regexp = substr($regexp, 0, -1) .'/'; - - // In order to simplify the regexps that look e.g. for quoted strings, we - // remove all escaped characters (such as \' or \") from the data. Then, we - // put them back as they were. - - if ($escape) { - // Remove escaped characters - $script = preg_replace_callback( - '/\\\\(.)/', - '_packer_escape_char', - $script - ); - $escaped = _packer_escape_char(NULL, TRUE); - } - - _packer_replacement(NULL, $_regexps, $escape); - $script = preg_replace_callback( - $regexp, - '_packer_replacement', - $script - ); - - if ($escape) { - // Restore escaped characters - _packer_unescape_char(NULL, $escaped); - $script = preg_replace_callback( - '/\\\\/', - '_packer_unescape_char', - $script - ); - - // We only delete portions of data afterwards to ensure the escaped character - // replacements don't go out of sync. We mark all sections to delete with - // ASCII 01 bytes. - $script = preg_replace('/\\x01[^\\x01]*\\x01/', '', $script); - } - - return $script; -} - -/** - * Helper function for _packer_apply(). - */ -function _packer_escape_char($match, $return = FALSE) { - // Build array of escaped characters that were removed. - static $_escaped = array(); - if ($return) { - $escaped = $_escaped; - $_escaped = array(); - return $escaped; - } - else { - $_escaped[] = $match[1]; - return '\\'; - } -} - -/** - * Helper function for _packer_apply(). - * - * Performs replacements for the multi-regexp. - */ -function _packer_replacement($arguments, $regexps = NULL, $escape = NULL) { - // Cache regexps - static $_regexps, $_escape; - if (isset($regexps)) { - $_regexps = $regexps; - } - if (isset($escape)) { - $_escape = $escape; - } - - if (empty($arguments)) { - return ''; - } - - $i = 1; $j = 0; - // Loop through the regexps - while (isset($_regexps[$j])) { - list($expression, $replacement, $length) = $_regexps[$j++]; - - // Do we have a result? - if (isset($arguments[$i]) && ($arguments[$i] != '')) { - if (is_array($replacement) && isset($replacement['fn'])) { - return call_user_func('_packer_'. $replacement['fn'], $arguments, $i, $replacement['data']); - } - elseif (is_int($replacement)) { - return $arguments[$replacement + $i]; - } - else { - $delete = !$escape || strpos($arguments[$i], '\\') === FALSE - ? '' : "\x01". $arguments[$i] ."\x01"; - return $delete . $replacement; - } - // skip over references to sub-expressions - } - else { - $i += $length; - } - } -} - -/** - * Helper function for _packer_apply(). - */ -function _packer_unescape_char($match, $escaped = NULL) { - // Store array of escaped characters to insert back. - static $_escaped, $i; - if ($escaped) { - $_escaped = $escaped; - $i = 0; - } - else { - return '\\'. array_shift($_escaped); - } -} - -/** - * Helper function for _packer_replacement(). - */ -function _packer_backreferences($match, $offset, $data) { - $replacement = $data['replacement']; - $i = $data['length']; - while ($i) { - $replacement = str_replace('$'.$i--, $match[$offset + $i], $replacement); - } - return $replacement; -} - /** * Delete all cached JS files. */ -- cgit v1.2.3