LessParser: Add custom function `extract-variable-default`
This commit is contained in:
parent
b1622fcb2d
commit
b59f26879e
|
@ -3,11 +3,66 @@
|
||||||
|
|
||||||
namespace Icinga\Util;
|
namespace Icinga\Util;
|
||||||
|
|
||||||
|
use Less_Tree_Anonymous;
|
||||||
|
use Less_Tree_Expression;
|
||||||
|
use Less_Tree_Quoted;
|
||||||
|
use Less_Tree_Value;
|
||||||
use lessc;
|
use lessc;
|
||||||
|
|
||||||
require_once 'lessphp/lessc.inc.php';
|
require_once 'lessphp/lessc.inc.php';
|
||||||
|
|
||||||
class LessParser extends lessc
|
class LessParser extends lessc
|
||||||
{
|
{
|
||||||
// Overwrite methods here
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->registerFunction('extract-variable-default', [$this, 'extractVariableDefault']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extract default from given variable call
|
||||||
|
*
|
||||||
|
* How to use:
|
||||||
|
*
|
||||||
|
* color: extract-variable-default(@mixin-parameter);
|
||||||
|
* color: @mixin-parameter;
|
||||||
|
*
|
||||||
|
* border: extract-variable-default(1px solid @mixin-parameter);
|
||||||
|
* border: 1px solid @mixin-parameter;
|
||||||
|
*
|
||||||
|
* background: drop-shadow(5px 0 3px extract-variable-default(@mixin-parameter, true));
|
||||||
|
* background: drop-shadow(5px 0 3px @mixin-parameter);
|
||||||
|
*
|
||||||
|
* @param mixed $value
|
||||||
|
* @param bool $valAsDefault
|
||||||
|
*
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function extractVariableDefault($value, $valAsDefault = false)
|
||||||
|
{
|
||||||
|
$defaultValue = 'inherit';
|
||||||
|
if ($value instanceof Less_Tree_Quoted) {
|
||||||
|
$stripped = preg_replace(
|
||||||
|
'~var\s*\(\s*[-\w]+\s*,\s*([^)]+)\)~',
|
||||||
|
'$1',
|
||||||
|
$value->value,
|
||||||
|
-1,
|
||||||
|
$replacements
|
||||||
|
);
|
||||||
|
if ($replacements > 0) {
|
||||||
|
$defaultValue = $stripped;
|
||||||
|
}
|
||||||
|
} elseif ($value instanceof Less_Tree_Expression) {
|
||||||
|
foreach ($value->value as $i => $item) {
|
||||||
|
$value->value[$i] = $this->extractVariableDefault($item, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($valAsDefault && $defaultValue === 'inherit') {
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Less_Tree_Value([new Less_Tree_Anonymous($defaultValue)]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue