PHP Classes

File: classes/css/parser/model/css-parser-model-selector.php

Recommend this page to a friend!
  Classes of Gonzalo Chumillas   PHP Query   classes/css/parser/model/css-parser-model-selector.php   Download  
File: classes/css/parser/model/css-parser-model-selector.php
Role: Class source
Content type: text/plain
Description: Class source
Class: PHP Query
Parse and access XML documents as arrays
Author: By
Last change: update
Date: 9 years ago
Size: 2,467 bytes
 

Contents

Class file image Download
<?php
/**
 * This file contains the CssParserModelSelector class.
 *
 * PHP Version 5.3
 *
 * @category Css
 * @package CssParser
 * @author Gonzalo Chumillas <gonzalo@soloproyectos.com>
 * @license https://raw2.github.com/soloproyectos/php.common-libs/master/LICENSE BSD 2-Clause License
 * @link https://github.com/soloproyectos/php.common-libs
 */
namespace com\soloproyectos\common\css\parser\model;
use \
DOMElement;
use \
DOMNode;
use
com\soloproyectos\common\css\parser\model\CssParserModelFactor;
use
com\soloproyectos\common\dom\DomHelper;

/**
 * Class CssParserModelSelector.
 *
 * This class represents a term in a CSS expression.
 *
 * @category Css
 * @package CssParser
 * @author Gonzalo Chumillas <gonzalo@soloproyectos.com>
 * @license https://raw2.github.com/soloproyectos/php.common-libs/master/LICENSE BSD 2-Clause License
 * @link https://github.com/soloproyectos/php.common-libs
 */
class CssParserModelSelector
{
   
/**
     * List of factors.
     * @var array of CssParserModelFactor objects
     */
   
private $_factors = array();
   
   
/**
     * Adds a factor.
     *
     * @param CssParserModelFactor $factor Factor object
     *
     * @return void
     */
   
public function addFactor($factor)
    {
       
array_push($this->_factors, $factor);
    }
   
   
/**
     * Gets all filtered subnodes of a given node.
     *
     * This function filters all subnodes of a given node that satisfy all factors.
     * A term is actually a list of factors, and a factor can be added by the
     * 'addFactor' function.
     *
     * @param DOMNode $node DOMNode object
     *
     * @return array of DOMElement objects
     */
   
public function filter($node)
    {
       
$ret = array();
       
$items = array($node);
        foreach (
$this->_factors as $factor) {
           
$ret = $this->_getNodesByFactor($items, $factor);
           
$items = $ret;
        }
        return
$ret;
    }
   
   
/**
     * Gets nodes from a list by a given factor.
     *
     * @param array $nodes List of DOMNode objects
     * @param CssParserModelFactor $factor Factor object
     *
     * @return array of DOMElement objects
     */
   
private function _getNodesByFactor($nodes, $factor)
    {
       
$ret = array();
        foreach (
$nodes as $node) {
           
$items = $factor->filter($node);
           
$ret = DomHelper::mergeNodes($ret, $items);
        }
        return
$ret;
    }
}