function CSSRule($rule, &$pipeline)
 {
     $this->selector = $rule[0];
     $this->body = $rule[1]->copy();
     $this->baseurl = $rule[2];
     $this->order = $rule[3];
     $this->specificity = css_selector_specificity($this->selector);
     $this->pseudoelement = css_find_pseudoelement($this->selector);
 }
Example #2
0
 function CSSRule($selector, $body, $baseurl, $order)
 {
     $this->selector = $selector;
     $this->body =& $body;
     $this->baseurl = $baseurl;
     $this->order = $order;
     $this->specificity = css_selector_specificity($this->selector);
     $this->pseudoelement = css_find_pseudoelement($this->selector);
 }
 function CSSRule($rule, &$pipeline)
 {
     $this->selector = $rule[0];
     $this->body = $rule[1];
     $this->baseurl = $rule[2];
     $this->order = $rule[3];
     // Pre-parse property values
     foreach (array_keys($this->body) as $key) {
         $handler =& get_css_handler($key);
         if ($handler) {
             $value = $this->parse_important($key, $this->body[$key]);
             $pipeline->push_base_url($this->baseurl);
             $this->body[$key] = $handler->parse($value, $pipeline);
             $pipeline->pop_base_url();
         }
     }
     $this->specificity = css_selector_specificity($this->selector);
     $this->pseudoelement = css_find_pseudoelement($this->selector);
 }
Example #4
0
function css_selector_specificity($selector)
{
    switch ($selector[0]) {
        case SELECTOR_ID:
            return array(1, 0, 0);
        case SELECTOR_CLASS:
            return array(0, 1, 0);
        case SELECTOR_TAG:
            return array(0, 0, 1);
        case SELECTOR_TAG_CLASS:
            return array(0, 1, 1);
        case SELECTOR_SEQUENCE:
            $specificity = array(0, 0, 0);
            foreach ($selector[1] as $subselector) {
                $s = css_selector_specificity($subselector);
                $specificity = array($specificity[0] + $s[0], $specificity[1] + $s[1], $specificity[2] + $s[2]);
            }
            return $specificity;
        case SELECTOR_PARENT:
            return css_selector_specificity($selector[1]);
        case SELECTOR_PARENT_LOW_PRIORITY:
            return array(-1, -1, -1);
        case SELECTOR_DIRECT_PARENT:
            return css_selector_specificity($selector[1]);
        case SELECTOR_ATTR:
            return array(0, 1, 0);
        case SELECTOR_ATTR_VALUE:
            return array(0, 1, 0);
        case SELECTOR_ATTR_VALUE_WORD:
            return array(0, 1, 0);
        case SELECTOR_PSEUDOCLASS_LINK:
            return array(0, 1, 0);
        case SELECTOR_PSEUDOCLASS_LINK_LOW_PRIORITY:
            return array(0, 0, 0);
        case SELECTOR_PSEUDOELEMENT_BEFORE:
            return array(0, 0, 0);
        case SELECTOR_PSEUDOELEMENT_AFTER:
            return array(0, 0, 0);
        case SELECTOR_LANGUAGE:
            return array(0, 1, 0);
        case SELECTOR_ANY:
            return array(0, 1, 0);
        default:
            die("Bad selector while calculating selector specificity:" . $selector[0]);
    }
}