extractDirective() public static method

Returns the directive
public static extractDirective ( object $token ) : string
$token object token
return string the directive
Beispiel #1
0
 /**
  * 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;
     }
 }
Beispiel #2
0
 /**
  * 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;
     }
 }