PHP Classes

File: classes/css/parser/combinator/css-parser-combinator-user-defined.php

Recommend this page to a friend!
  Classes of Gonzalo Chumillas   PHP Query   classes/css/parser/combinator/css-parser-combinator-user-defined.php   Download  
File: classes/css/parser/combinator/css-parser-combinator-user-defined.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,192 bytes
 

Contents

Class file image Download
<?php
/**
 * This file contains the CssParserCombinatorUserDefined 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\combinator;
use \
Closure;
use \
DOMElement;
use
com\soloproyectos\common\css\parser\exception\CssParserException;
use
com\soloproyectos\common\css\parser\combinator\CssParserCombinator;

/**
 * Class CssParserCombinatorUserDefined.
 *
 * This class represents a filter 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 CssParserCombinatorUserDefined extends CssParserCombinator
{
   
/**
     * User defined function.
     * @var Closure
     */
   
private $_userDefFunction;
   
   
/**
     * Constructor.
     *
     * @param Closure $userDefFunction User defined function
     *
     * @return void
     */
   
public function __construct($userDefFunction)
    {
       
$this->_userDefFunction = $userDefFunction;
    }
   
   
/**
     * Gets the child nodes.
     *
     * @param DOMElement $node DOMElement object
     * @param string $tagname Tag name
     *
     * @return array of DOMElements
     */
   
public function filter($node, $tagname)
    {
       
$userDefFunction = $this->_userDefFunction;
       
$nodes = $userDefFunction($node, $tagname);
       
        if (!
is_array($nodes)) {
            throw new
CssParserException(
               
"The user defined combinator is not an array"
           
);
        }
       
       
// excludes the items that are not elements
       
$items = array();
        foreach (
$nodes as $node) {
            if (
$node instanceof DOMElement) {
               
array_push($items, $node);
            }
        }
       
        return
$items;
    }
}