private function SassParser::sass2Token in Sassy 7.3
Same name and namespace in other branches
- 7 phamlp/sass/SassParser.php \SassParser::sass2Token()
Returns an object that contains the next source statement and meta data about it from SASS source. Sass statements are passed over. Statements spanning multiple lines, e.g. CSS comments and selectors, are assembled into a single statement.
Return value
object Statement token. Null if end of source.
1 call to SassParser::sass2Token()
- SassParser::getToken in phpsass/
SassParser.php - Returns a token object that contains the next source statement and meta data about it.
File
- phpsass/
SassParser.php, line 646
Class
- SassParser
- SassParser class. Parses {@link http://sass-lang.com/ .sass and .sccs} files. @package PHamlP @subpackage Sass
Code
private function sass2Token() {
$statement = '';
// source line being tokenised
$token = null;
while (is_null($token) && !empty($this->source)) {
while (empty($statement) && !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;
}