summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorGábor Hojtsy <gabor@hojtsy.hu>2007-12-19 17:19:50 +0000
committerGábor Hojtsy <gabor@hojtsy.hu>2007-12-19 17:19:50 +0000
commit277a15248f4e1e457974a2ed74cebc5de3a26ce3 (patch)
treed95c7747704cba3ee79dfb4138ea5f8d6e9dfec9 /includes
parent7f2ca820752f7330114db7256b14a78cc4bad85c (diff)
downloadbrdo-277a15248f4e1e457974a2ed74cebc5de3a26ce3.tar.gz
brdo-277a15248f4e1e457974a2ed74cebc5de3a26ce3.tar.bz2
#183940 by bjaspan, keith.smith: remove broken JS compression, but leave JS aggregation; update help text to that effect
Diffstat (limited to 'includes')
-rw-r--r--includes/common.inc226
1 files changed, 1 insertions, 225 deletions
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) .';';
}
}
@@ -2228,230 +2228,6 @@ function drupal_build_js_cache($files, $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('/(?<!\\\\)\((?!\?)/', $expression, $out);
-
- // Treat only strings $replacement
- if (is_string($replacement)) {
- // Does the pattern deal with sub-expressions?
- if (preg_match('/\$\d/', $replacement)) {
- if (preg_match('/^\$\d+$/', $replacement)) {
- // A simple lookup (e.g. "$2")
- // Store the index (used for fast retrieval of matched strings)
- $replacement = (int)(substr($replacement, 1));
- }
- else {
- // A complicated lookup (e.g. "Hello $2 $1").
- // Build a function to do the lookup.
- $replacement = array(
- 'fn' => '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.
*/
function drupal_clear_js_cache() {