Upgrade to rc5

This commit is contained in:
Bastian Allgeier
2020-12-10 11:24:42 +01:00
parent 3fec0d7c93
commit c378376bc9
257 changed files with 13009 additions and 1846 deletions

100
kirby/src/Parsley/Element.php Executable file
View File

@@ -0,0 +1,100 @@
<?php
namespace Kirby\Parsley;
use DOMElement;
use DOMXpath;
use Kirby\Toolkit\Str;
class Element
{
protected $marks;
protected $node;
public function __construct(DOMElement $node, array $marks = [])
{
$this->marks = $marks;
$this->node = $node;
}
public function attr(string $attr, $fallback = null)
{
if ($this->node->hasAttribute($attr)) {
return $this->node->getAttribute($attr) ?? $fallback;
}
return $fallback;
}
public function children()
{
return $this->node->childNodes;
}
public function classList(): array
{
return Str::split($this->className(), ' ');
}
public function className()
{
return $this->node->getAttribute('class');
}
public function element()
{
return $this->node;
}
public function filter(string $query)
{
$result = [];
if ($queryResult = $this->query($query)) {
foreach ($queryResult as $node) {
$result[] = new static($node);
}
}
return $result;
}
public function find(string $query)
{
if ($result = $this->query($query)[0]) {
return new static($result);
}
return false;
}
public function innerHtml(array $marks = null): string
{
return (new Inline($this->node, $marks ?? $this->marks))->innerHtml();
}
public function innerText()
{
return trim($this->node->textContent);
}
public function outerHtml(array $marks = null): string
{
return $this->node->ownerDocument->saveHtml($this->node);
}
public function query($query)
{
return (new DOMXPath($this->node->ownerDocument))->query($query, $this->node);
}
public function remove()
{
$this->node->parentNode->removeChild($this->node);
}
public function tagName(): string
{
return $this->node->tagName;
}
}