File tree Expand file tree Collapse file tree 4 files changed +80
-1
lines changed Expand file tree Collapse file tree 4 files changed +80
-1
lines changed Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ Please also have a look at our
2121
2222### Changed
2323
24+ - Make ` Selector ` a ` Renderable ` (#1017 )
2425- Mark ` Selector::isValid() ` as ` @internal ` (#1037 )
2526- Mark parsing-related methods of most CSS elements as ` @internal ` (#908 )
2627- Mark ` OutputFormat::nextLevel() ` as ` @internal ` (#901 )
Original file line number Diff line number Diff line change 44
55namespace Sabberworm \CSS \Property ;
66
7+ use Sabberworm \CSS \OutputFormat ;
8+ use Sabberworm \CSS \Renderable ;
9+
710/**
811 * Class representing a single CSS selector. Selectors have to be split by the comma prior to being passed into this
912 * class.
1013 */
11- class Selector
14+ class Selector implements Renderable
1215{
1316 /**
1417 * regexp for specificity calculations
@@ -139,4 +142,9 @@ public function getSpecificity()
139142 }
140143 return $ this ->specificity ;
141144 }
145+
146+ public function render (OutputFormat $ outputFormat ): string
147+ {
148+ return $ this ->getSelector ();
149+ }
142150}
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace Sabberworm \CSS \Tests \Functional \Selector ;
6+
7+ use PHPUnit \Framework \TestCase ;
8+ use Sabberworm \CSS \OutputFormat ;
9+ use Sabberworm \CSS \Property \Selector ;
10+
11+ /**
12+ * @covers \Sabberworm\CSS\Property\Selector
13+ */
14+ final class SelectorTest extends TestCase
15+ {
16+ /**
17+ * @test
18+ */
19+ public function renderWithVirginOutputFormatRendersSelectorPassedToConstructor (): void
20+ {
21+ $ pattern = 'a ' ;
22+ $ subject = new Selector ($ pattern );
23+
24+ self ::assertSame ($ pattern , $ subject ->render (new OutputFormat ()));
25+ }
26+
27+ /**
28+ * @test
29+ */
30+ public function renderWithDefaultOutputFormatRendersSelectorPassedToConstructor (): void
31+ {
32+ $ pattern = 'a ' ;
33+ $ subject = new Selector ($ pattern );
34+
35+ self ::assertSame ($ pattern , $ subject ->render (OutputFormat::create ()));
36+ }
37+
38+ /**
39+ * @test
40+ */
41+ public function renderWithCompactOutputFormatRendersSelectorPassedToConstructor (): void
42+ {
43+ $ pattern = 'a ' ;
44+ $ subject = new Selector ($ pattern );
45+
46+ self ::assertSame ($ pattern , $ subject ->render (OutputFormat::createCompact ()));
47+ }
48+
49+ /**
50+ * @test
51+ */
52+ public function renderWithPrettyOutputFormatRendersSelectorPassedToConstructor (): void
53+ {
54+ $ pattern = 'a ' ;
55+ $ subject = new Selector ($ pattern );
56+
57+ self ::assertSame ($ pattern , $ subject ->render (OutputFormat::createPretty ()));
58+ }
59+ }
Original file line number Diff line number Diff line change 66
77use PHPUnit \Framework \TestCase ;
88use Sabberworm \CSS \Property \Selector ;
9+ use Sabberworm \CSS \Renderable ;
910
1011/**
1112 * @covers \Sabberworm\CSS\Property\Selector
1213 */
1314final class SelectorTest extends TestCase
1415{
16+ /**
17+ * @test
18+ */
19+ public function implementsRenderable (): void
20+ {
21+ $ subject = new Selector ('a ' );
22+
23+ self ::assertInstanceOf (Renderable::class, $ subject );
24+ }
25+
1526 /**
1627 * @test
1728 */
You can’t perform that action at this time.
0 commit comments