Example #1
0
 public function getValuesFromExtractor(ExtractorInterface $extractor)
 {
     $values = array();
     $matchers = array('type-font-family' => 'setFontFamily', 'type-font-weight' => 'setFontWeight', 'type-text-decoration' => 'setTextDecoration', 'type-text-transform' => 'setTextTransform', 'type-font-style' => 'setFontStyle', 'type-color' => 'setColor', 'type-font-size' => 'setFontSize', 'type-letter-spacing' => 'setLetterSpacing', 'type-line-height' => 'setLineHeight');
     foreach ($matchers as $find => $setFunc) {
         $vars = $extractor->extractMatchingVariables('.+\\-' . $find);
         foreach ($vars as $name => $value) {
             if ($find == 'type-color') {
                 $cv = ColorStyle::parse($value);
                 $value = $cv instanceof ColorValue ? $cv : null;
             } elseif (in_array($find, array('type-font-size', 'type-letter-spacing', 'type-line-height'))) {
                 $sv = SizeStyle::parse($value);
                 $value = $sv instanceof SizeValue ? $sv : null;
             }
             if ($value !== null) {
                 $name = substr($name, 0, -strlen($find));
                 if (!isset($values[$name])) {
                     $values[$name] = new TypeValue($name);
                 }
                 call_user_func(array($values[$name], $setFunc), $value);
             }
         }
     }
     return $values;
 }
 public function getValuesFromVariables($rules = array())
 {
     $values = array();
     foreach ($rules as $rule) {
         if (preg_match('/@(.+)\\-type-font-family/i', $rule->name, $matches)) {
             if (!$values[$matches[1]]) {
                 $values[$matches[1]] = new TypeValue($matches[1]);
             }
             $value = $rule->value->value[0]->value[0]->value;
             $values[$matches[1]]->setFontFamily($value);
         }
         if (preg_match('/@(.+)\\-type-font-weight/i', $rule->name, $matches)) {
             if (!$values[$matches[1]]) {
                 $values[$matches[1]] = new TypeValue($matches[1]);
             }
             $value = $rule->value->value[0]->value[0]->value;
             $values[$matches[1]]->setFontWeight($value);
         }
         if (preg_match('/@(.+)\\-type-text-decoration/i', $rule->name, $matches)) {
             if (!$values[$matches[1]]) {
                 $values[$matches[1]] = new TypeValue($matches[1]);
             }
             $value = $rule->value->value[0]->value[0]->value;
             $values[$matches[1]]->setTextDecoration($value);
         }
         if (preg_match('/@(.+)\\-type-text-transform/i', $rule->name, $matches)) {
             if (!$values[$matches[1]]) {
                 $values[$matches[1]] = new TypeValue($matches[1]);
             }
             $value = $rule->value->value[0]->value[0]->value;
             $values[$matches[1]]->setTextTransform($value);
         }
         if (preg_match('/@(.+)\\-type-font-style/i', $rule->name, $matches)) {
             if (!$values[$matches[1]]) {
                 $values[$matches[1]] = new TypeValue($matches[1]);
             }
             $value = $rule->value->value[0]->value[0]->value;
             $values[$matches[1]]->setFontStyle($value);
         }
         if (preg_match('/@(.+)\\-type-color/i', $rule->name, $matches)) {
             if (!$values[$matches[1]]) {
                 $values[$matches[1]] = new TypeValue($matches[1]);
             }
             $value = $rule->value->value[0]->value[0];
             $cv = ColorStyle::parse($value);
             if ($cv instanceof ColorValue) {
                 $values[$matches[1]]->setColor($cv);
             }
         }
         if (preg_match('/@(.+)\\-type-font-size/i', $rule->name, $matches)) {
             if (!$values[$matches[1]]) {
                 $values[$matches[1]] = new TypeValue($matches[1]);
             }
             $value = $rule->value->value[0]->value[0];
             $sv = SizeStyle::parse($value);
             if ($sv instanceof SizeValue) {
                 $values[$matches[1]]->setFontSize($sv);
             }
         }
         if (preg_match('/@(.+)\\-type-letter-spacing/i', $rule->name, $matches)) {
             if (!$values[$matches[1]]) {
                 $values[$matches[1]] = new TypeValue($matches[1]);
             }
             $value = $rule->value->value[0]->value[0];
             $sv = SizeStyle::parse($value);
             if ($sv instanceof SizeValue) {
                 $values[$matches[1]]->setLetterSpacing($sv);
             }
         }
         if (preg_match('/@(.+)\\-type-line-height/i', $rule->name, $matches)) {
             if (!$values[$matches[1]]) {
                 $values[$matches[1]] = new TypeValue($matches[1]);
             }
             $value = $rule->value->value[0]->value[0];
             $sv = SizeStyle::parse($value);
             if ($sv instanceof SizeValue) {
                 $values[$matches[1]]->setLineHeight($sv);
             }
         }
     }
     return $values;
 }