84 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/*
 | 
						|
		Nodes
 | 
						|
*/
 | 
						|
 | 
						|
class H2o_Node {
 | 
						|
    var $position;
 | 
						|
	function __construct($argstring) {}
 | 
						|
	
 | 
						|
	function render($context, $stream) {}
 | 
						|
}
 | 
						|
 | 
						|
class NodeList extends H2o_Node implements IteratorAggregate  {
 | 
						|
	var $parser;
 | 
						|
	var $list;
 | 
						|
	
 | 
						|
	function __construct(&$parser, $initial = null, $position = 0) {
 | 
						|
	    $this->parser = $parser;
 | 
						|
        if (is_null($initial))
 | 
						|
            $initial = array();
 | 
						|
        $this->list = $initial;
 | 
						|
        $this->position = $position;
 | 
						|
	}
 | 
						|
 | 
						|
	function render($context, $stream) {
 | 
						|
		foreach($this->list as $node) {
 | 
						|
			$node->render($context, $stream);
 | 
						|
		}
 | 
						|
	}
 | 
						|
	
 | 
						|
    function append($node) {
 | 
						|
        array_push($this->list, $node);
 | 
						|
    }
 | 
						|
 | 
						|
    function extend($nodes) {
 | 
						|
        array_merge($this->list, $nodes);
 | 
						|
    }
 | 
						|
 | 
						|
    function getLength() {
 | 
						|
        return count($this->list);
 | 
						|
    }
 | 
						|
    
 | 
						|
    function getIterator() {
 | 
						|
        return new ArrayIterator( $this->list );
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
class VariableNode extends H2o_Node {
 | 
						|
    private $filters = array();
 | 
						|
    var $variable;
 | 
						|
    
 | 
						|
	function __construct($variable, $filters, $position = 0) {
 | 
						|
        if (!empty($filters))
 | 
						|
            $this->filters = $filters;
 | 
						|
		$this->variable = $variable;
 | 
						|
	}
 | 
						|
 | 
						|
	function render($context, $stream) {
 | 
						|
        $value = $context->resolve($this->variable);
 | 
						|
        $value = $context->escape($value, $this->variable);
 | 
						|
        $stream->write($value);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
class CommentNode extends H2o_Node {}
 | 
						|
 | 
						|
class TextNode extends H2o_Node {
 | 
						|
    var $content;
 | 
						|
	function __construct($content, $position = 0) {
 | 
						|
		$this->content = $content;
 | 
						|
		$this->position = $position;
 | 
						|
	}
 | 
						|
	
 | 
						|
	function render($context, $stream) {
 | 
						|
		$stream->write($this->content);
 | 
						|
	}
 | 
						|
	
 | 
						|
	function is_blank() {
 | 
						|
	    return strlen(trim($this->content));
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
?>
 |