Represents a Mixin definition.
Inheritance: extends SassNode
Example #1
0
 /**
  * Creates and returns the next SassNode.
  * The tpye of SassNode depends on the content of the SassToken.
  * @return SassNode a SassNode of the appropriate type. Null when no more
  * source to parse.
  */
 private function getNode($node)
 {
     $token = $this->getToken();
     if (empty($token)) {
         return null;
     }
     switch (true) {
         case SassDirectiveNode::isa($token):
             return $this->parseDirective($token, $node);
             break;
         case SassCommentNode::isa($token):
             return new SassCommentNode($token);
             break;
         case SassVariableNode::isa($token):
             return new SassVariableNode($token);
             break;
         case SassPropertyNode::isa($token, $this->property_syntax):
             return new SassPropertyNode($token, $this->property_syntax);
             break;
         case SassMixinDefinitionNode::isa($token):
             if ($this->syntax === SassFile::SCSS) {
                 throw new SassException('Mixin {which} shortcut not allowed in SCSS', array('{which}' => 'definition'), $this);
             }
             return new SassMixinDefinitionNode($token);
             break;
         case SassMixinNode::isa($token):
             if ($this->syntax === SassFile::SCSS) {
                 throw new SassException('Mixin {which} shortcut not allowed in SCSS', array('{which}' => 'include'), $this);
             }
             return new SassMixinNode($token);
             break;
         default:
             return new SassRuleNode($token);
             break;
     }
     // switch
 }
Example #2
0
 /**
  * Creates and returns the next SassNode.
  * The tpye of SassNode depends on the content of the SassToken.
  * @return SassNode a SassNode of the appropriate type. Null when no more
  * source to parse.
  */
 public function getNode($node)
 {
     $token = $this->getToken();
     if (empty($token)) {
         return null;
     }
     switch (true) {
         case SassDirectiveNode::isa($token):
             return $this->parseDirective($token, $node);
         case SassCommentNode::isa($token):
             return new SassCommentNode($token);
         case SassVariableNode::isa($token):
             return new SassVariableNode($token);
         case SassPropertyNode::isa(array('token' => $token, 'syntax' => $this->property_syntax)):
             return new SassPropertyNode($token, $this->property_syntax);
         case SassFunctionDefinitionNode::isa($token):
             return new SassFunctionDefinitionNode($token);
         case SassMixinDefinitionNode::isa($token):
             if ($this->syntax === SassFile::SCSS) {
                 if ($this->debug) {
                     throw new SassException('Mixin definition shortcut not allowed in SCSS', $this);
                 }
                 return;
             } else {
                 return new SassMixinDefinitionNode($token);
             }
         case SassMixinNode::isa($token):
             if ($this->syntax === SassFile::SCSS) {
                 if ($this->debug) {
                     throw new SassException('Mixin include shortcut not allowed in SCSS', $this);
                 }
                 return;
             } else {
                 return new SassMixinNode($token);
             }
         default:
             return new SassRuleNode($token);
             break;
     }
     // switch
 }
Example #3
0
 /**
  * Parses a mixin definition
  * @param string line to parse
  * @return SassMixinDefinitionNode mixin definition node
  */
 private function parseMixinDefinition($line)
 {
     if ($line['indentLevel'] !== 0) {
         throw new SassMixinDefinitionNodeException("Illegal Mixin definition, mixins can only be defined at root level\n{$line['number']}: " . (is_array($line['file']) ? join(DIRECTORY_SEPARATOR, $line['file']) : ''));
     }
     $matches = SassMixinDefinitionNode::match($line);
     return sizeof($matches) == 2 ? new SassMixinDefinitionNode($matches[SassMixinDefinitionNode::NAME]) : new SassMixinDefinitionNode($matches[SassMixinDefinitionNode::NAME], $matches[SassMixinDefinitionNode::ARGUMENTS]);
 }