diff --git a/composer.json b/composer.json index 9607352..2bf19bc 100644 --- a/composer.json +++ b/composer.json @@ -33,7 +33,7 @@ }, "require-dev": { "phpunit/phpunit": "~9.0", - "vimeo/psalm": "~4.22", + "innmind/static-analysis": "^1.2.1", "innmind/coding-standard": "~2.0" } } diff --git a/psalm.xml b/psalm.xml index 3240886..510148d 100644 --- a/psalm.xml +++ b/psalm.xml @@ -2,6 +2,8 @@ href; } + #[\Override] public function name(): string { return 'a'; } + #[\Override] public function attributes(): Map { return $this->element->attributes(); } + #[\Override] public function attribute(string $name): Maybe { return $this->element->attribute($name); } + #[\Override] public function removeAttribute(string $name): self { return new self( @@ -79,6 +83,7 @@ public function removeAttribute(string $name): self ); } + #[\Override] public function addAttribute(Attribute $attribute): self { return new self( @@ -87,11 +92,13 @@ public function addAttribute(Attribute $attribute): self ); } + #[\Override] public function children(): Sequence { return $this->element->children(); } + #[\Override] public function filterChild(callable $filter): self { return new self( @@ -100,6 +107,7 @@ public function filterChild(callable $filter): self ); } + #[\Override] public function mapChild(callable $map): self { return new self( @@ -108,6 +116,7 @@ public function mapChild(callable $map): self ); } + #[\Override] public function prependChild(Node $child): self { return new self( @@ -116,6 +125,7 @@ public function prependChild(Node $child): self ); } + #[\Override] public function appendChild(Node $child): self { return new self( @@ -124,11 +134,13 @@ public function appendChild(Node $child): self ); } + #[\Override] public function content(): string { return $this->element->content(); } + #[\Override] public function toString(): string { return $this diff --git a/src/Element/Base.php b/src/Element/Base.php index 5dea444..c98c300 100644 --- a/src/Element/Base.php +++ b/src/Element/Base.php @@ -46,21 +46,25 @@ public function href(): Url return $this->href; } + #[\Override] public function name(): string { return 'base'; } + #[\Override] public function attributes(): Map { return $this->element->attributes(); } + #[\Override] public function attribute(string $name): Maybe { return $this->element->attribute($name); } + #[\Override] public function removeAttribute(string $name): self { return new self( @@ -69,6 +73,7 @@ public function removeAttribute(string $name): self ); } + #[\Override] public function addAttribute(Attribute $attribute): self { return new self( @@ -77,11 +82,13 @@ public function addAttribute(Attribute $attribute): self ); } + #[\Override] public function children(): Sequence { return $this->element->children(); } + #[\Override] public function filterChild(callable $filter): self { return new self( @@ -90,6 +97,7 @@ public function filterChild(callable $filter): self ); } + #[\Override] public function mapChild(callable $map): self { return new self( @@ -98,6 +106,7 @@ public function mapChild(callable $map): self ); } + #[\Override] public function prependChild(Node $child): self { return new self( @@ -106,6 +115,7 @@ public function prependChild(Node $child): self ); } + #[\Override] public function appendChild(Node $child): self { return new self( @@ -114,11 +124,13 @@ public function appendChild(Node $child): self ); } + #[\Override] public function content(): string { return $this->element->content(); } + #[\Override] public function toString(): string { return $this diff --git a/src/Element/Img.php b/src/Element/Img.php index 5fbdd69..0bf4498 100644 --- a/src/Element/Img.php +++ b/src/Element/Img.php @@ -46,21 +46,25 @@ public function src(): Url return $this->src; } + #[\Override] public function name(): string { return 'img'; } + #[\Override] public function attributes(): Map { return $this->element->attributes(); } + #[\Override] public function attribute(string $name): Maybe { return $this->element->attribute($name); } + #[\Override] public function removeAttribute(string $name): self { return new self( @@ -69,6 +73,7 @@ public function removeAttribute(string $name): self ); } + #[\Override] public function addAttribute(Attribute $attribute): self { return new self( @@ -77,11 +82,13 @@ public function addAttribute(Attribute $attribute): self ); } + #[\Override] public function children(): Sequence { return $this->element->children(); } + #[\Override] public function filterChild(callable $filter): self { return new self( @@ -90,6 +97,7 @@ public function filterChild(callable $filter): self ); } + #[\Override] public function mapChild(callable $map): self { return new self( @@ -98,6 +106,7 @@ public function mapChild(callable $map): self ); } + #[\Override] public function prependChild(Node $child): self { return new self( @@ -106,6 +115,7 @@ public function prependChild(Node $child): self ); } + #[\Override] public function appendChild(Node $child): self { return new self( @@ -114,11 +124,13 @@ public function appendChild(Node $child): self ); } + #[\Override] public function content(): string { return $this->element->content(); } + #[\Override] public function toString(): string { return $this diff --git a/src/Element/Link.php b/src/Element/Link.php index 0cc656e..a995361 100644 --- a/src/Element/Link.php +++ b/src/Element/Link.php @@ -71,21 +71,25 @@ public function relationship(): string return $this->relationship; } + #[\Override] public function name(): string { return 'link'; } + #[\Override] public function attributes(): Map { return $this->element->attributes(); } + #[\Override] public function attribute(string $name): Maybe { return $this->element->attribute($name); } + #[\Override] public function removeAttribute(string $name): self { return new self( @@ -95,6 +99,7 @@ public function removeAttribute(string $name): self ); } + #[\Override] public function addAttribute(Attribute $attribute): self { return new self( @@ -104,11 +109,13 @@ public function addAttribute(Attribute $attribute): self ); } + #[\Override] public function children(): Sequence { return $this->element->children(); } + #[\Override] public function filterChild(callable $filter): self { return new self( @@ -118,6 +125,7 @@ public function filterChild(callable $filter): self ); } + #[\Override] public function mapChild(callable $map): self { return new self( @@ -127,6 +135,7 @@ public function mapChild(callable $map): self ); } + #[\Override] public function prependChild(Node $child): self { return new self( @@ -136,6 +145,7 @@ public function prependChild(Node $child): self ); } + #[\Override] public function appendChild(Node $child): self { return new self( @@ -145,11 +155,13 @@ public function appendChild(Node $child): self ); } + #[\Override] public function content(): string { return $this->element->content(); } + #[\Override] public function toString(): string { return $this diff --git a/src/Element/Script.php b/src/Element/Script.php index 7420adc..3028a42 100644 --- a/src/Element/Script.php +++ b/src/Element/Script.php @@ -41,61 +41,73 @@ public static function of(Text $text, ?Set $attributes = null): self return new self(Element\Element::of('script', $attributes, $children)); } + #[\Override] public function name(): string { return 'script'; } + #[\Override] public function attributes(): Map { return $this->element->attributes(); } + #[\Override] public function attribute(string $name): Maybe { return $this->element->attribute($name); } + #[\Override] public function removeAttribute(string $name): self { return new self($this->element->removeAttribute($name)); } + #[\Override] public function addAttribute(Attribute $attribute): self { return new self($this->element->addAttribute($attribute)); } + #[\Override] public function children(): Sequence { return $this->element->children(); } + #[\Override] public function filterChild(callable $filter): self { return new self($this->element->filterChild($filter)); } + #[\Override] public function mapChild(callable $map): self { return new self($this->element->mapChild($map)); } + #[\Override] public function prependChild(Node $child): self { return new self($this->element->prependChild($child)); } + #[\Override] public function appendChild(Node $child): self { return new self($this->element->appendChild($child)); } + #[\Override] public function content(): string { return $this->element->content(); } + #[\Override] public function toString(): string { return $this->element->toString(); diff --git a/src/Node/Document.php b/src/Node/Document.php index ba18c80..3e7e29c 100644 --- a/src/Node/Document.php +++ b/src/Node/Document.php @@ -50,6 +50,7 @@ public function type(): Type return $this->type; } + #[\Override] public function children(): Sequence { return $this->children; @@ -60,6 +61,7 @@ public function hasChildren(): bool return !$this->children->empty(); } + #[\Override] public function filterChild(callable $filter): self { return new self( @@ -68,6 +70,7 @@ public function filterChild(callable $filter): self ); } + #[\Override] public function mapChild(callable $map): self { return new self( @@ -76,6 +79,7 @@ public function mapChild(callable $map): self ); } + #[\Override] public function prependChild(Node $child): Node { return new self( @@ -84,6 +88,7 @@ public function prependChild(Node $child): Node ); } + #[\Override] public function appendChild(Node $child): Node { return new self( @@ -92,6 +97,7 @@ public function appendChild(Node $child): Node ); } + #[\Override] public function content(): string { $children = $this->children->map( @@ -101,13 +107,20 @@ public function content(): string return Str::of('')->join($children)->toString(); } + #[\Override] public function toString(): string { return $this->type->toString()."\n".$this->content(); } + #[\Override] public function asContent(): Content { + /** + * @psalm-suppress MixedArgumentTypeCoercion + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress MixedMethodCall + */ return Content::ofLines( $this ->children diff --git a/src/Reader/Reader.php b/src/Reader/Reader.php index 77e8e5e..c51a01f 100644 --- a/src/Reader/Reader.php +++ b/src/Reader/Reader.php @@ -26,6 +26,7 @@ private function __construct(Translator $translate) $this->translate = $translate; } + #[\Override] public function __invoke(Content $html): Maybe { /** @psalm-suppress ImpureMethodCall */ diff --git a/src/Translator/NodeTranslator/ATranslator.php b/src/Translator/NodeTranslator/ATranslator.php index f73bb08..521faa4 100644 --- a/src/Translator/NodeTranslator/ATranslator.php +++ b/src/Translator/NodeTranslator/ATranslator.php @@ -23,6 +23,7 @@ private function __construct() { } + #[\Override] public function __invoke( \DOMNode $node, Translator $translate, diff --git a/src/Translator/NodeTranslator/BaseTranslator.php b/src/Translator/NodeTranslator/BaseTranslator.php index e1a1824..c0ef3ba 100644 --- a/src/Translator/NodeTranslator/BaseTranslator.php +++ b/src/Translator/NodeTranslator/BaseTranslator.php @@ -22,6 +22,7 @@ private function __construct() { } + #[\Override] public function __invoke( \DOMNode $node, Translator $translate, diff --git a/src/Translator/NodeTranslator/DocumentTranslator.php b/src/Translator/NodeTranslator/DocumentTranslator.php index fca5b2a..e6e6d48 100644 --- a/src/Translator/NodeTranslator/DocumentTranslator.php +++ b/src/Translator/NodeTranslator/DocumentTranslator.php @@ -24,6 +24,7 @@ private function __construct() { } + #[\Override] public function __invoke( \DOMNode $node, Translator $translate, @@ -62,6 +63,7 @@ public static function of(): self */ private function buildDoctype(\DOMDocumentType $type): Maybe { + /** @psalm-suppress MixedArgument */ return Type::maybe( $type->name, $type->publicId, @@ -79,6 +81,10 @@ private function buildChildren( /** @var Maybe> */ $children = Maybe::just(Sequence::of()); + /** + * @psalm-suppress ImpureMethodCall + * @var \DOMNode $child + */ foreach ($nodes as $child) { if ($child->nodeType === \XML_DOCUMENT_TYPE_NODE) { continue; diff --git a/src/Translator/NodeTranslator/ElementTranslator.php b/src/Translator/NodeTranslator/ElementTranslator.php index 58bc3eb..3529502 100644 --- a/src/Translator/NodeTranslator/ElementTranslator.php +++ b/src/Translator/NodeTranslator/ElementTranslator.php @@ -33,6 +33,7 @@ private function __construct( $this->translators = $translators; } + #[\Override] public function __invoke( \DOMNode $node, Translator $translate, diff --git a/src/Translator/NodeTranslator/ImgTranslator.php b/src/Translator/NodeTranslator/ImgTranslator.php index d32b45d..bdb1e76 100644 --- a/src/Translator/NodeTranslator/ImgTranslator.php +++ b/src/Translator/NodeTranslator/ImgTranslator.php @@ -22,6 +22,7 @@ private function __construct() { } + #[\Override] public function __invoke( \DOMNode $node, Translator $translate, diff --git a/src/Translator/NodeTranslator/LinkTranslator.php b/src/Translator/NodeTranslator/LinkTranslator.php index 21eb080..82ff01a 100644 --- a/src/Translator/NodeTranslator/LinkTranslator.php +++ b/src/Translator/NodeTranslator/LinkTranslator.php @@ -26,6 +26,7 @@ private function __construct() { } + #[\Override] public function __invoke( \DOMNode $node, Translator $translate, diff --git a/src/Translator/NodeTranslator/ScriptTranslator.php b/src/Translator/NodeTranslator/ScriptTranslator.php index 9fceb86..8b0f95f 100644 --- a/src/Translator/NodeTranslator/ScriptTranslator.php +++ b/src/Translator/NodeTranslator/ScriptTranslator.php @@ -22,6 +22,7 @@ private function __construct() { } + #[\Override] public function __invoke( \DOMNode $node, Translator $translate,