SassParser::sass2Token PHP Method

sass2Token() public method

Sass statements are passed over. Statements spanning multiple lines, e.g. CSS comments and selectors, are assembled into a single statement.
public sass2Token ( ) : object
return object Statement token. Null if end of source.
    public function sass2Token()
    {
        $statement = '';
        // source line being tokenised
        $token = null;
        while ($token === null && !empty($this->source)) {
            while (empty($statement) && is_array($this->source) && !empty($this->source)) {
                $source = array_shift($this->source);
                $statement = trim($source);
                $this->line++;
            }
            if (empty($statement)) {
                break;
            }
            $level = $this->getLevel($source);
            // Comment statements can span multiple lines
            if ($statement[0] === self::BEGIN_COMMENT) {
                // Consume Sass comments
                if (substr($statement, 0, strlen(self::BEGIN_SASS_COMMENT)) === self::BEGIN_SASS_COMMENT) {
                    unset($statement);
                    while ($this->getLevel($this->source[0]) > $level) {
                        array_shift($this->source);
                        $this->line++;
                    }
                    continue;
                } elseif (substr($statement, 0, strlen(self::BEGIN_CSS_COMMENT)) === self::BEGIN_CSS_COMMENT) {
                    while ($this->getLevel($this->source[0]) > $level) {
                        $statement .= "\n" . ltrim(array_shift($this->source));
                        $this->line++;
                    }
                } else {
                    $this->source = $statement;
                    if ($this->debug) {
                        throw new SassException('Illegal comment type', $this);
                    }
                }
            } elseif (substr($statement, -1) === SassRuleNode::CONTINUED) {
                // Build the selector statement
                while ($this->getLevel($this->source[0]) === $level) {
                    $statement .= ltrim(array_shift($this->source));
                    $this->line++;
                }
            }
            $token = (object) array('source' => $statement, 'level' => $level, 'filename' => $this->filename, 'line' => $this->line - 1);
        }
        return $token;
    }