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; }