mirror of
https://github.com/moodle/moodle.git
synced 2025-01-18 05:58:34 +01:00
96 lines
2.3 KiB
PHP
96 lines
2.3 KiB
PHP
<?php
|
|
|
|
/**
|
|
* SCSSPHP
|
|
*
|
|
* @copyright 2012-2020 Leaf Corcoran
|
|
*
|
|
* @license http://opensource.org/licenses/MIT MIT
|
|
*
|
|
* @link http://scssphp.github.io/scssphp
|
|
*/
|
|
|
|
namespace ScssPhp\ScssPhp;
|
|
|
|
use ScssPhp\ScssPhp\Node\Number;
|
|
|
|
final class ValueConverter
|
|
{
|
|
// Prevent instantiating it
|
|
private function __construct()
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Parses a value from a Scss source string.
|
|
*
|
|
* The returned value is guaranteed to be supported by the
|
|
* Compiler methods for registering custom variables. No other
|
|
* guarantee about it is provided. It should be considered
|
|
* opaque values by the caller.
|
|
*
|
|
* @param string $source
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public static function parseValue($source)
|
|
{
|
|
$parser = new Parser(__CLASS__);
|
|
|
|
if (!$parser->parseValue($source, $value)) {
|
|
throw new \InvalidArgumentException(sprintf('Invalid value source "%s".', $source));
|
|
}
|
|
|
|
return $value;
|
|
}
|
|
|
|
/**
|
|
* Converts a PHP value to a Sass value
|
|
*
|
|
* The returned value is guaranteed to be supported by the
|
|
* Compiler methods for registering custom variables. No other
|
|
* guarantee about it is provided. It should be considered
|
|
* opaque values by the caller.
|
|
*
|
|
* @param mixed $value
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public static function fromPhp($value)
|
|
{
|
|
if ($value instanceof Number) {
|
|
return $value;
|
|
}
|
|
|
|
if (is_array($value) && isset($value[0]) && \in_array($value[0], [Type::T_NULL, Type::T_COLOR, Type::T_KEYWORD, Type::T_LIST, Type::T_MAP, Type::T_STRING])) {
|
|
return $value;
|
|
}
|
|
|
|
if ($value === null) {
|
|
return Compiler::$null;
|
|
}
|
|
|
|
if ($value === true) {
|
|
return Compiler::$true;
|
|
}
|
|
|
|
if ($value === false) {
|
|
return Compiler::$false;
|
|
}
|
|
|
|
if ($value === '') {
|
|
return Compiler::$emptyString;
|
|
}
|
|
|
|
if (\is_int($value) || \is_float($value)) {
|
|
return new Number($value, '');
|
|
}
|
|
|
|
if (\is_string($value)) {
|
|
return [Type::T_STRING, '"', [$value]];
|
|
}
|
|
|
|
throw new \InvalidArgumentException(sprintf('Cannot convert the value of type "%s" to a Sass value.', gettype($value)));
|
|
}
|
|
}
|