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; }
/** * @return Preset */ public static function getFromFile($lessFile, $urlroot) { $o = new static(); $o->file = $lessFile; $o->urlroot = $urlroot; $o->filename = basename($lessFile); $o->handle = substr($o->filename, 0, strrpos($o->filename, '.')); $l = new Less_Parser(); $parser = $l->parseFile($lessFile, false, true); $rules = $parser->rules; foreach ($rules as $rule) { if ($rule->name == static::PRESET_RULE_NAME) { $o->name = $rule->value->value[0]->value[0]->value; } if ($rule->name == static::PRESET_RULE_ICON) { $method = $rule->value->value[0]->value[0]; if ($method instanceof Less_Tree_Call && $method->name == static::PRESET_RULE_ICON_FUNCTION) { $cv1 = ColorStyle::parse($method->args[0]->value[0]); $cv2 = ColorStyle::parse($method->args[1]->value[0]); $cv3 = ColorStyle::parse($method->args[2]->value[0]); $o->color1 = $cv1; $o->color2 = $cv2; $o->color3 = $cv3; } } } return $o; }
/** * @return Preset */ public static function getFromFile($lessFile, $urlroot) { $o = new static(); $o->file = $lessFile; $o->urlroot = $urlroot; $o->filename = basename($lessFile); $o->handle = substr($o->filename, 0, strrpos($o->filename, '.')); $l = new Less_Parser(); $parser = $l->parseFile($lessFile, false, true); $rules = $parser->rules; foreach ($rules as $rule) { switch (isset($rule->name) ? $rule->name : '') { case static::PRESET_RULE_NAME: $o->name = $rule->value->value[0]->value[0]->value; break; case static::PRESET_RULE_ICON: $method = $rule->value->value[0]->value[0]; if ($method instanceof Less_Tree_Call) { // extract the name and arguments from the method $color = TreeCallColor::fromTreeCall($method); if ($color->getName() == static::PRESET_RULE_ICON_FUNCTION) { $args = $color->getArguments(); $cv1 = ColorStyle::parse($args[0]->value[0]); $cv2 = ColorStyle::parse($args[1]->value[0]); $cv3 = ColorStyle::parse($args[2]->value[0]); $o->color1 = $cv1; $o->color2 = $cv2; $o->color3 = $cv3; } } break; } } return $o; }
/** * {@inheritDoc} */ public static function getFromFile($file, $urlroot) { $extractor = Core::make('Concrete\\Package\\AssetPipeline\\Src\\Asset\\UtilityInterface')->getValueExtractorForFile($file, $urlroot); if (!is_object($extractor)) { return null; } $o = new static(); $o->file = $file; $o->urlroot = $urlroot; $o->filename = basename($file); $o->handle = substr($o->filename, 0, strrpos($o->filename, '.')); $o->name = $extractor->extractPresetName(); if (is_array($color = $extractor->extractPresetIcon())) { $cv1 = ColorStyle::parse($color[0]); $cv2 = ColorStyle::parse($color[1]); $cv3 = ColorStyle::parse($color[2]); $o->color1 = $cv1; $o->color2 = $cv2; $o->color3 = $cv3; } return $o; }
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; }