Sha256: a8ddf3aeb433b302424172760204efb9831a801140cfd626dd38a4c1edb7a350

Contents?: true

Size: 1.67 KB

Versions: 3

Compression:

Stored size: 1.67 KB

Contents

<?php
/* SVN FILE: $Id: SassWhileNode.php 118 2010-09-21 09:45:11Z chris.l.yates@gmail.com $ */
/**
 * SassWhileNode class file.
 * @author			Chris Yates <chris.l.yates@gmail.com>
 * @copyright 	Copyright (c) 2010 PBM Web Development
 * @license			http://phamlp.googlecode.com/files/license.txt
 * @package			PHamlP
 * @subpackage	Sass.tree
 */

/**
 * SassWhileNode class.
 * Represents a Sass @while loop and a Sass @do loop.
 * @package			PHamlP
 * @subpackage	Sass.tree
 */
class SassWhileNode extends SassNode {
	const MATCH = '/^@(do|while)\s+(.+)$/i';
	const LOOP = 1;
	const EXPRESSION = 2;
	const IS_DO = 'do';
	/**
	 * @var boolean whether this is a do/while.
	 * A do/while loop is guarenteed to run at least once.
	 */
	private $isDo;
	/**
	 * @var string expression to evaluate
	 */
	private $expression;

	/**
	 * SassWhileNode constructor.
	 * @param object source token
	 * @return SassWhileNode
	 */
	public function __construct($token) {
		parent::__construct($token);
		preg_match(self::MATCH, $token->source, $matches);
		$this->expression = $matches[self::EXPRESSION];
		$this->isDo = ($matches[self::LOOP] === SassWhileNode::IS_DO);
	}

	/**
	 * Parse this node.
	 * @param SassContext the context in which this node is parsed
	 * @return array the parsed child nodes
	 */
	public function parse($context) {
		$children = array();
		if ($this->isDo) {
			do {
				$children = array_merge($children, $this->parseChildren($context));
			} while ($this->evaluate($this->expression, $context)->toBoolean());
		}
		else {
			while ($this->evaluate($this->expression, $context)->toBoolean()) {
				$children = array_merge($children, $this->parseChildren($context));
			}
		}
		return $children;
	}
}

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
frontsau-0.0.3 lib/Phamlp/sass/tree/SassWhileNode.php
frontsau-0.0.2 lib/Phamlp/sass/tree/SassWhileNode.php
frontsau-0.0.1 lib/Phamlp/sass/tree/SassWhileNode.php