/** * Converts $this->css array to a raw array ($this->tokens). * * @since 1.0.0 * * @param string $default_media Optional. Default @media to add to selectors without any @media. */ protected function _convert_raw_css($default_media = '') { $this->tokens = array(); $sort_selectors = $this->parser->get_cfg('sort_selectors'); $sort_properties = $this->parser->get_cfg('sort_properties'); foreach ($this->css as $medium => $val) { if ($sort_selectors) { ksort($val); } if (intval($medium) < DEFAULT_AT) { // un medium vide (contenant @font-face ou autre @) ne produit aucun conteneur if (strlen(trim($medium))) { $this->parser->_add_token(AT_START, $medium, true); } } elseif ($default_media) { $this->parser->_add_token(AT_START, $default_media, true); } foreach ($val as $selector => $vali) { if ($sort_properties) { ksort($vali); } $this->parser->_add_token(SEL_START, $selector, true); $invalid = array('*' => array(), '_' => array(), '/' => array(), '-' => array()); foreach ($vali as $property => $valj) { if (0 !== strncmp($property, '//', 2)) { $matches = array(); if ($sort_properties && preg_match('/^(\\*|_|\\/|-)(?!(ms|moz|o\\b|xv|atsc|wap|khtml|webkit|ah|hp|ro|rim|tc)-)/', $property, $matches)) { $invalid[$matches[1]][$property] = $valj; } else { $this->parser->_add_token(PROPERTY, $property, true); $this->parser->_add_token(VALUE, $valj, true); } } } foreach ($invalid as $prefix => $props) { foreach ($props as $property => $valj) { $this->parser->_add_token(PROPERTY, $property, true); $this->parser->_add_token(VALUE, $valj, true); } } $this->parser->_add_token(SEL_END, $selector, true); } if (intval($medium) < DEFAULT_AT) { // un medium vide (contenant @font-face ou autre @) ne produit aucun conteneur if (strlen(trim($medium))) { $this->parser->_add_token(AT_END, $medium, true); } } elseif ($default_media) { $this->parser->_add_token(AT_END, $default_media, true); } } }