Beispiel #1
0
 /**
  * Adds a new CSS style to this rule.
  *
  * @param css_style|string $style Adds a new style to this rule
  */
 public function add_style($style)
 {
     if (is_string($style)) {
         $style = trim($style);
         if (empty($style)) {
             return;
         }
         $bits = explode(':', $style, 2);
         if (count($bits) == 2) {
             list($name, $value) = array_map('trim', $bits);
         }
         if (isset($name) && isset($value) && $name !== '' && $value !== '') {
             $style = css_style::init($name, $value);
         }
     } else {
         if ($style instanceof css_style) {
             // Clone the style as it may be coming from another rule and we don't
             // want references as it will likely be overwritten by proceeding
             // rules
             $style = clone $style;
         }
     }
     if ($style instanceof css_style) {
         $name = $style->get_name();
         if (array_key_exists($name, $this->styles)) {
             $this->styles[$name]->set_value($style->get_value());
         } else {
             $this->styles[$name] = $style;
         }
     } else {
         if (is_array($style)) {
             // We probably shouldn't worry about processing styles here but to
             // be truthful it doesn't hurt.
             foreach ($style as $astyle) {
                 $this->add_style($astyle);
             }
         }
     }
 }