function ctools_css_disassemble in Chaos Tool Suite (ctools) 7
Same name and namespace in other branches
- 6 includes/css.inc \ctools_css_disassemble()
Disassemble the css string.
Strip the css of irrelevant characters, invalid/malformed selectors and declarations, and otherwise prepare it for processing.
Parameters
string $css: A string containing the css to be disassembled.
Return value
array An array of disassembled, slightly cleaned-up/formatted css statements.
2 calls to ctools_css_disassemble()
- CtoolsCssTestCase::testCssFilterURLHandling in tests/
css.test - Test that in case that url is used, the colons survives filtering.
- ctools_css_filter in includes/
css.inc - Filter a chunk of CSS text.
File
- includes/
css.inc, line 284 - CSS filtering functions. Contains a disassembler, filter, compressor, and decompressor.
Code
function ctools_css_disassemble($css) {
$disassembled_css = array();
// Remove comments.
$css = preg_replace("/\\/\\*(.*)?\\*\\//Usi", "", $css);
// Split out each statement. Match either a right curly brace or a semi-colon
// that precedes a left curly brace with no right curly brace separating them.
$statements = preg_split('/}|;(?=[^}]*{)/', $css);
// If we have any statements, parse them.
if (!empty($statements)) {
// Iterate through all of the statements.
foreach ($statements as $statement) {
// Get the selector(s) and declaration.
if (empty($statement) || !strpos($statement, '{')) {
continue;
}
list($selector_str, $declaration) = explode('{', $statement);
// If the selector exists, then disassemble it, check it, and regenerate
// the selector string.
$selector_str = empty($selector_str) ? FALSE : _ctools_css_disassemble_selector($selector_str);
if (empty($selector_str)) {
// No valid selectors. Bomb out and start the next item.
continue;
}
// Disassemble the declaration, check it and tuck it into an array.
if (!isset($disassembled_css[$selector_str])) {
$disassembled_css[$selector_str] = array();
}
$disassembled_css[$selector_str] += _ctools_css_disassemble_declaration($declaration);
}
}
return $disassembled_css;
}