Processes the contents of a stylesheet for aggregation.

Paramètres

string $contents: The contents of the stylesheet.

bool $optimize: (Optional) Boolean whether CSS contents should be minified. Defaults to FALSE.

Return value

string Contents of the stylesheet including the imported stylesheets.

Voir aussi

drupal_load_stylesheet_content()

4 calls to advagg_load_stylesheet_content()
AdvAggCascadingStylesheetsTestCase::testRenderFile dans tests/advagg.test
Tests rendering the stylesheets.
advagg_load_stylesheet dans ./advagg.module
Loads the stylesheet and resolves all @import commands.
advagg_mod_admin_test_css_files dans advagg_mod/advagg_mod.admin.inc
Test all CSS files seeing if any string translations do anything.
_advagg_aggregate_css dans ./advagg.module
Default callback to aggregate CSS files and inline content.

Fichier

./advagg.module, line 5222

Code

function advagg_load_stylesheet_content($contents, $optimize = FALSE) {
    // If a BOM is found, convert the file to UTF-8. Used for inline CSS here.
    $encoding = advagg_get_encoding_from_bom($contents);
    if (!empty($encoding)) {
        $contents = advagg_convert_to_utf8($contents, $encoding);
    }
    if ($optimize) {
        // Perform some safe CSS optimizations.
        // Regexp to match comment blocks.
        // Regexp to match double quoted strings.
        // Regexp to match single quoted strings.
        $comment = '/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/';
        $double_quot = '"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"';
        $single_quot = "'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'";
        // Strip all comment blocks, but keep double/single quoted strings.
        $contents = preg_replace("<({$double_quot}|{$single_quot})|{$comment}>Ss", "\$1", $contents);
        // Remove certain whitespace.
        // There are different conditions for removing leading and trailing
        // whitespace.
        // @see http://php.net/manual/regexp.reference.subpatterns.php
        $contents = preg_replace('<
      # Do not strip any space from within single or double quotes
      (' . $double_quot . '|' . $single_quot . ')
      # Strip leading and trailing whitespace.
      | \\s*([@{};,])\\s*
      # Strip only leading whitespace from:
      # - Closing parenthesis: Retain "@media (bar) and foo".
      | \\s+([\\)])
      # Strip only trailing whitespace from:
      # - Opening parenthesis: Retain "@media (bar) and foo".
      # - Colon: Retain :pseudo-selectors.
      | ([\\(:])\\s+
    >xSs', '$1$2$3$4', $contents);
        // End the file with a new line.
        $contents = trim($contents);
        $contents .= "\n";
    }
    // Remove multiple charset declarations for standards compliance (and fixing
    // Safari problems).
    $contents = preg_replace('/^@charset\\s+[\'"](\\S*?)\\b[\'"];/i', '', $contents);
    // Replaces @import commands with the actual stylesheet content.
    // This happens recursively but omits external files.
    $contents = preg_replace_callback('%@import\\s*+(?:url\\(\\s*+)?+[\'"]?+(?![a-z]++:|/)([^\'"()\\s]++)[\'"]?+\\s*+\\)?+\\s*+;%i', '_advagg_load_stylesheet', $contents);
    return $contents;
}