Source of file SassMixinDefinitionNode.php
Size: 2,389 Bytes - Last Modified: 2021-12-23T10:32:55+00:00
/var/www/docs.ssmods.com/process/src/code/phpsass/tree/SassMixinDefinitionNode.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | <?php /* SVN FILE: $Id$ */ /** * SassMixinDefinitionNode class file. * @author Chris Yates <chris.l.yates@gmail.com> * @copyright Copyright (c) 2010 PBM Web Development * @license http://phamlp.googlecode.com/files/license.txt * @package PHamlP * @subpackage Sass.tree */ /** * SassMixinDefinitionNode class. * Represents a Mixin definition. * @package PHamlP * @subpackage Sass.tree */ class SassMixinDefinitionNode extends SassNode { const NODE_IDENTIFIER = '='; const MATCH = '/^(=|@mixin\s+)([-\w]+)\s*(?:\((.*?)\))?\s*$/im'; const IDENTIFIER = 1; const NAME = 2; const ARGUMENTS = 3; /** * @var string name of the mixin */ private $name; /** * @var array arguments for the mixin as name=>value pairs were value is the * default value or null for required arguments */ private $args = array(); /** * SassMixinDefinitionNode constructor. * @param object source token * @return SassMixinDefinitionNode */ public function __construct($token) { // if ($token->level > 1) { // throw new SassMixinDefinitionNodeException('Mixins can only be defined at root level. Token was set at level ' . $token->level, $token); // } preg_match(self::MATCH, $token->source, $matches); parent::__construct($token); if (empty($matches)) { throw new SassMixinDefinitionNodeException('Invalid Mixin', $this); } $this->name = $matches[self::NAME]; if (isset($matches[self::ARGUMENTS])) { $this->args = SassScriptFunction::extractArgs($matches[self::ARGUMENTS]); } } /** * Parse this node. * Add this mixin to the current context. * @param SassContext the context in which this node is parsed * @return array the parsed node - an empty array */ public function parse($context) { $context->addMixin($this->name, $this); return array(); } /** * Returns the arguments with default values for this mixin * @return array the arguments with default values for this mixin */ public function getArgs() { return $this->args; } /** * Returns a value indicating if the token represents this type of node. * @param object token * @return boolean true if the token represents this type of node, false if not */ public static function isa($token) { return $token->source[0] === self::NODE_IDENTIFIER; } } |