Beispiel #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;
 }
Beispiel #2
0
 /**
  * @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;
 }
Beispiel #3
0
 /**
  * @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;
 }
Beispiel #4
0
 /**
  * {@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;
 }