Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
RichtextDoc
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
3 / 3
4
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 validate
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 review
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace Cosray\Validation;
6
7use Celema\Sire\Contract\Validator;
8use Celema\Sire\Result;
9use Celema\Sire\Review;
10use Celema\Sire\Shape;
11use Cosray\Richtext\Validator as DocValidator;
12use Override;
13
14/**
15 * Sire adapter running the writer-strict richtext document validation
16 * on a per-locale value of a richtext field or block.
17 */
18final class RichtextDoc implements Validator
19{
20    private readonly Shape $shape;
21    private readonly DocValidator $validator;
22
23    /**
24     * @param array<string, string> $classes
25     * @param array<string, string> $styles
26     */
27    public function __construct(array $classes = [], array $styles = [])
28    {
29        $this->validator = new DocValidator($classes, $styles);
30        $this->shape = Shapes::create();
31        $this->shape->review($this->review(...));
32    }
33
34    #[Override]
35    public function validate(array $data): Result
36    {
37        return $this->shape->validate($data);
38    }
39
40    private function review(Review $review): void
41    {
42        foreach ($this->validator->validate($review->values()) as $error) {
43            $review->addError('', $error, 'richtext');
44        }
45    }
46}