af_readability: add missing file
parent
865c54abcb
commit
3e4701116d
@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
namespace andreskrey\Readability\Nodes\DOM;
|
||||
|
||||
/**
|
||||
* Class DOMNodeList.
|
||||
*
|
||||
* This is a fake DOMNodeList class that allows adding items to the list. The original class is static and the nodes
|
||||
* are defined automagically when instantiating it. This fake version behaves exactly the same way but adds the function
|
||||
* add() that allows to insert new DOMNodes into the DOMNodeList.
|
||||
*
|
||||
* It cannot extend the original DOMNodeList class because the functionality behind the property ->length is hidden
|
||||
* from the user and cannot be extended, changed, or tweaked.
|
||||
*/
|
||||
class DOMNodeList implements \Countable, \IteratorAggregate
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $items = [];
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected $length = 0;
|
||||
|
||||
/**
|
||||
* To allow access to length in the same way that DOMNodeList allows.
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __get($name)
|
||||
{
|
||||
switch ($name) {
|
||||
case 'length':
|
||||
return $this->length;
|
||||
default:
|
||||
trigger_error(sprintf('Undefined property: %s::%s', static::class, $name));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DOMNode|DOMElement|DOMComment $node
|
||||
*
|
||||
* @return DOMNodeList
|
||||
*/
|
||||
public function add($node)
|
||||
{
|
||||
$this->items[] = $node;
|
||||
$this->length++;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $offset
|
||||
*
|
||||
* @return DOMNode|DOMElement|DOMComment
|
||||
*/
|
||||
public function item(int $offset)
|
||||
{
|
||||
return $this->items[$offset];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int|void
|
||||
*/
|
||||
public function count(): int
|
||||
{
|
||||
return $this->length;
|
||||
}
|
||||
|
||||
/**
|
||||
* To make it compatible with iterator_to_array() function.
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getIterator(): \ArrayIterator
|
||||
{
|
||||
return new \ArrayIterator($this->items);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue