Returns the directive
public static extractDirective ( object $token ) : string | ||
$token | object | token |
return | string | the directive |
/** * Parses a directive * @param SassToken token to parse * @param SassNode parent node * @return SassNode a Sass directive node */ public function parseDirective($token, $parent) { switch (SassDirectiveNode::extractDirective($token)) { case '@content': return new SassContentNode($token); break; case '@extend': return new SassExtendNode($token); break; case '@function': return new SassFunctionDefinitionNode($token); break; case '@return': return new SassReturnNode($token); break; case '@media': return new SassMediaNode($token); break; case '@mixin': return new SassMixinDefinitionNode($token); break; case '@include': return new SassMixinNode($token); break; case '@import': if ($this->syntax == SassFile::SASS) { $i = 0; $source = ''; while (sizeof($this->source) > $i && empty($source) && isset($this->source[$i + 1])) { $source = $this->source[$i++]; } if (!empty($source) && $this->getLevel($source) > $token->level) { if ($this->debug) { throw new SassException('Nesting not allowed beneath @import directive', $token); } } } return new SassImportNode($token, $parent); break; case '@each': return new SassEachNode($token); break; case '@for': return new SassForNode($token); break; case '@if': return new SassIfNode($token); break; case '@else': // handles else and else if directives return new SassElseNode($token); break; case '@do': case '@while': return new SassWhileNode($token); break; case '@warn': return new SassWarnNode($token); break; case '@debug': return new SassDebugNode($token); break; default: return new SassDirectiveNode($token); break; } }
/** * Parses a directive * @param SassToken token to parse * @param SassNode parent node * @return SassNode a Sass directive node */ private function parseDirective($token, $parent) { switch (SassDirectiveNode::extractDirective($token)) { case '@extend': return new SassExtendNode($token); break; case '@mixin': return new SassMixinDefinitionNode($token); break; case '@include': return new SassMixinNode($token); break; case '@import': if ($this->syntax == SassFile::SASS) { $i = 0; $source = ''; while (!empty($this->source) && empty($source)) { $source = $this->source[$i++]; } if (!empty($source) && $this->getLevel($source) > $token->level) { throw new SassException('Nesting not allowed beneath {what}', array('{what}' => '@import directive'), $token); } } return new SassImportNode($token); break; case '@for': return new SassForNode($token); break; case '@if': return new SassIfNode($token); break; case '@else': // handles else and else if directives return new SassElseNode($token); break; case '@do': case '@while': return new SassWhileNode($token); break; case '@debug': return new SassDebugNode($token); break; case '@warn': return new SassDebugNode($token, true); break; default: return new SassDirectiveNode($token); break; } }