private function parse_rule($root) { if (!$this->chop('/^([^{}:;]+)\\s*:\\s*([^{};]+)\\s*(;|\\})/us', $matches)) { return FALSE; } $name = $this->translate($matches[1]); $value = $this->translate($matches[2]); //是否存在针对该rule的patcher $patchers = CSSP::rule_patchers($name); if ($patchers) { foreach ((array) $patchers as $patcher) { $handler = $patcher['handler']; $params = $patcher['params']; call_user_func($handler, $this, $root, $name, $value, $params); } } else { $rule = CSSP::node(CSS_Node::NODE_RULE); $rule->name = $name; $rule->value = $value; $root->append($rule); } if ($matches[3] == '}') { $this->spit(1); } return TRUE; }