| 6 common.inc | drupal_load_stylesheet($file, $optimize = NULL) |
| 7 common.inc | drupal_load_stylesheet($file, $optimize = NULL, $reset_basepath = TRUE) |
| 8 common.inc | drupal_load_stylesheet($file, $optimize = NULL, $reset_basepath = TRUE) |
Loads the stylesheet and resolves all @import commands.
Loads a stylesheet and replaces @import commands with the contents of the imported file. Use this instead of file_get_contents when processing stylesheets.
The returned contents are compressed removing white space and comments only when CSS aggregation is enabled. This optimization will not apply for color.module enabled themes with CSS aggregation turned off.
Parameters
$file: Name of the stylesheet to be processed.
$optimize: Defines if CSS contents should be compressed or not.
Return value
Contents of the stylesheet including the imported stylesheets.
3 calls to drupal_load_stylesheet()
File
- includes/
common.inc, line 2038 - Common functions that many Drupal modules will need to reference.
Code
function drupal_load_stylesheet($file, $optimize = NULL) {
static $_optimize;
// Store optimization parameter for preg_replace_callback with nested @import loops.
if (isset($optimize)) {
$_optimize = $optimize;
}
$contents = '';
if (file_exists($file)) {
// Load the local CSS stylesheet.
$contents = file_get_contents($file);
// Change to the current stylesheet's directory.
$cwd = getcwd();
chdir(dirname($file));
// Replaces @import commands with the actual stylesheet content.
// This happens recursively but omits external files.
$contents = preg_replace_callback('/@import\s*(?:url\()?[\'"]?(?![a-z]+:)([^\'"\()]+)[\'"]?\)?;/', '_drupal_load_stylesheet', $contents);
// Remove multiple charset declarations for standards compliance (and fixing Safari problems).
$contents = preg_replace('/^@charset\s+[\'"](\S*)\b[\'"];/i', '', $contents);
if ($_optimize) {
// Perform some safe CSS optimizations.
// Regexp to match comment blocks.
$comment = '/\*[^*]*\*+(?:[^/*][^*]*\*+)*/';
// Regexp to match double quoted strings.
$double_quot = '"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"';
// Regexp to match single quoted strings.
$single_quot = "'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'";
$contents = preg_replace_callback(
"<$double_quot|$single_quot|$comment>Ss", // Match all comment blocks along
"_process_comment", // with double/single quoted strings
$contents); // and feed them to _process_comment().
$contents = preg_replace(
'<\s*([@{}:;,]|\)\s|\s\()\s*>S', // Remove whitespace around separators,
'\1', $contents); // but keep space around parentheses.
// End the file with a new line.
$contents .= "\n";
}
// Change back directory.
chdir($cwd);
}
return $contents;
}
Login or register to post comments