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
File
- lessphp/
lessc.inc.php, line 751
Class
Code
function compileValue($value) {
switch ($value[0]) {
case 'list':
// [1] - delimiter
// [2] - array of values
return implode($value[1], array_map(array(
$this,
'compileValue',
), $value[2]));
case 'keyword':
// [1] - the keyword
case 'number':
// [1] - the number
return $value[1];
case 'expression':
// [1] - operator
// [2] - value of left hand side
// [3] - value of right
return $this
->compileValue($this
->evaluate($value[1], $value[2], $value[3]));
case 'string':
// [1] - contents of string (includes quotes)
// search for inline variables to replace
$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) {
// strip quotes
if (preg_match('/^(["\']).*?(\\1)$/', $val)) {
$val = substr($val, 1, -1);
}
$value[1] = str_replace('{' . $var . '}', $val, $value[1]);
}
return $value[1];
case 'color':
// [1] - red component (either number for a %)
// [2] - green component
// [3] - blue component
// [4] - optional alpha component
if (count($value) == 5) {
// rgba
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':
// [1] - the name of the variable including @
$tmp = $this
->compileValue($this
->getVal($value[1], $this
->pushName($value[1])));
$this
->popName();
return $tmp;
case 'negative':
// [1] - some value that needs to become negative
return $this
->compileValue($this
->reduce($value));
case 'function':
// [1] - function name
// [2] - some value representing arguments
// see if there is a library function for this func
$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:
// assumed to be unit
return $value[1] . $value[0];
}
}