public function generate() { foreach ($this->files as $file) { mark('解析CSS文件:' . $file); $this->file = $file; $content = file_get_contents($file); $cssDoc = JCssParser::parse($content); foreach ($cssDoc['stylesheet']['rules'] as $rule) { if ($rule['type'] === 'rule') { $bgDecls = array(); $merge = null; foreach ($rule['declarations'] as $declaration) { if (strpos($declaration['property'], 'background') !== false) { array_push($bgDecls, $declaration); } elseif ($declaration['property'] === 'merge') { $merge = $declaration['value']; } } if ($merge) { $this->setConfigByRule($merge, $bgDecls); } } } } return $this; }
/** * css解析入口 * @param $contents {String} css文本内容 * @return string {String} 处理后的文件 */ protected function cssParse($contents) { // 处理逻辑 $doc = JCssParser::parse($contents); $ret = new stdClass(); $ret->return = null; trigger('css_parse_start', $this, $doc, $ret); if ($ret->return) { $doc = $ret->return; } $importContents = $this->handleImport($doc['stylesheet']['rules']); if ($this->isReplaceUri) { $this->handleBackground($doc['stylesheet']['rules']); } return $importContents . JCssParser::stringify($doc); }