You are here

private function SassParser::getNode in Sassy 7.3

Same name and namespace in other branches
  1. 7 phamlp/sass/SassParser.php \SassParser::getNode()

Creates and returns the next SassNode. The tpye of SassNode depends on the content of the SassToken.

Return value

SassNode a SassNode of the appropriate type. Null when no more source to parse.

1 call to SassParser::getNode()
SassParser::buildTree in phpsass/SassParser.php
Builds a parse tree under the parent node. Called recursivly until the source is parsed.

File

phpsass/SassParser.php, line 590

Class

SassParser
SassParser class. Parses {@link http://sass-lang.com/ .sass and .sccs} files. @package PHamlP @subpackage Sass

Code

private 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
}