function lessc::compileValue in Less CSS Preprocessor 6.3
Same name and namespace in other branches
- 6 lessc.inc.php \lessc::compileValue()
6 calls to lessc::compileValue()
- lessc::chunk in lessphp/lessc.inc.php
- lessc::compileProperty in lessphp/lessc.inc.php
- lessc::evaluate in lessphp/lessc.inc.php
- lessc::lib_quote in lessphp/lessc.inc.php
- lessc::lib_unquote in lessphp/lessc.inc.php
... See full list
File
- lessphp/lessc.inc.php, line 751
Class
- lessc
Code
function compileValue($value) {
switch ($value[0]) {
case 'list':
return implode($value[1], array_map(array(
$this,
'compileValue',
), $value[2]));
case 'keyword':
case 'number':
return $value[1];
case 'expression':
return $this
->compileValue($this
->evaluate($value[1], $value[2], $value[3]));
case 'string':
$replace = array();
if (preg_match_all('/{(' . $this
->preg_quote($this->vPrefix) . '[\\w-_][0-9\\w-_]*?)}/', $value[1], $m)) {
foreach ($m[1] as $name) {
if (!isset($replace[$name])) {
$replace[$name] = $this
->compileValue(array(
'variable',
$name,
));
}
}
}
foreach ($replace as $var => $val) {
if (preg_match('/^(["\']).*?(\\1)$/', $val)) {
$val = substr($val, 1, -1);
}
$value[1] = str_replace('{' . $var . '}', $val, $value[1]);
}
return $value[1];
case 'color':
if (count($value) == 5) {
return 'rgba(' . $value[1] . ',' . $value[2] . ',' . $value[3] . ',' . $value[4] . ')';
}
$out = '#';
foreach (range(1, 3) as $i) {
$out .= ($value[$i] < 16 ? '0' : '') . dechex($value[$i]);
}
return $out;
case 'variable':
$tmp = $this
->compileValue($this
->getVal($value[1], $this
->pushName($value[1])));
$this
->popName();
return $tmp;
case 'negative':
return $this
->compileValue($this
->reduce($value));
case 'function':
$f = array(
$this,
'lib_' . $value[1],
);
if (is_callable($f)) {
return call_user_func($f, $value[2]);
}
return $value[1] . '(' . $this
->compileValue($value[2]) . ')';
default:
return $value[1] . $value[0];
}
}