Skip to content

Commit f6b7d2f

Browse files
authored
Merge pull request #302 from oliverklee/task/types/cssblocklist
Add type annotations for `CSSBlockList`
2 parents ddf0daa + 22081d2 commit f6b7d2f

File tree

2 files changed

+39
-3
lines changed

2 files changed

+39
-3
lines changed

src/CSSList/CSSBlockList.php

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,36 @@
22

33
namespace Sabberworm\CSS\CSSList;
44

5+
use Sabberworm\CSS\Property\Selector;
56
use Sabberworm\CSS\Rule\Rule;
67
use Sabberworm\CSS\RuleSet\DeclarationBlock;
78
use Sabberworm\CSS\RuleSet\RuleSet;
89
use Sabberworm\CSS\Value\CSSFunction;
10+
use Sabberworm\CSS\Value\CSSString;
11+
use Sabberworm\CSS\Value\Value;
912
use Sabberworm\CSS\Value\ValueList;
1013

1114
/**
12-
* A CSSBlockList is a CSSList whose DeclarationBlocks are guaranteed to contain valid declaration blocks or at-rules.
13-
* Most CSSLists conform to this category but some at-rules (such as @keyframes) do not.
15+
* A `CSSBlockList` is a `CSSList` whose `DeclarationBlock`s are guaranteed to contain valid declaration blocks or
16+
* at-rules.
17+
*
18+
* Most `CSSList`s conform to this category but some at-rules (such as `@keyframes`) do not.
1419
*/
1520
abstract class CSSBlockList extends CSSList
1621
{
22+
/**
23+
* @param int $iLineNo
24+
*/
1725
public function __construct($iLineNo = 0)
1826
{
1927
parent::__construct($iLineNo);
2028
}
2129

30+
/**
31+
* @param array<int, DeclarationBlock> $aResult
32+
*
33+
* @return void
34+
*/
2235
protected function allDeclarationBlocks(array &$aResult)
2336
{
2437
foreach ($this->aContents as $mContent) {
@@ -30,6 +43,11 @@ protected function allDeclarationBlocks(array &$aResult)
3043
}
3144
}
3245

46+
/**
47+
* @param array<int, RuleSet> $aResult
48+
*
49+
* @return void
50+
*/
3351
protected function allRuleSets(array &$aResult)
3452
{
3553
foreach ($this->aContents as $mContent) {
@@ -41,6 +59,14 @@ protected function allRuleSets(array &$aResult)
4159
}
4260
}
4361

62+
/**
63+
* @param CSSList|Rule|RuleSet|Value $oElement
64+
* @param array<int, Value|CSSString> $aResult
65+
* @param string|null $sSearchString
66+
* @param bool $bSearchInFunctionArguments
67+
*
68+
* @return void
69+
*/
4470
protected function allValues($oElement, array &$aResult, $sSearchString = null, $bSearchInFunctionArguments = false)
4571
{
4672
if ($oElement instanceof CSSBlockList) {
@@ -60,13 +86,20 @@ protected function allValues($oElement, array &$aResult, $sSearchString = null,
6086
}
6187
}
6288
} else {
63-
//Non-List Value or CSSString (CSS identifier)
89+
// Non-List Value or CSSString (CSS identifier)
6490
$aResult[] = $oElement;
6591
}
6692
}
6793

94+
/**
95+
* @param array<int, Selector|string> $aResult
96+
* @param string|null $sSpecificitySearch
97+
*
98+
* @return void
99+
*/
68100
protected function allSelectors(array &$aResult, $sSpecificitySearch = null)
69101
{
102+
/** @var array<int, DeclarationBlock> $aDeclarationBlocks */
70103
$aDeclarationBlocks = [];
71104
$this->allDeclarationBlocks($aDeclarationBlocks);
72105
foreach ($aDeclarationBlocks as $oBlock) {

src/CSSList/Document.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
use Sabberworm\CSS\OutputFormat;
66
use Sabberworm\CSS\Parsing\ParserState;
77
use Sabberworm\CSS\Parsing\SourceException;
8+
use Sabberworm\CSS\Value\CSSString;
9+
use Sabberworm\CSS\Value\Value;
810

911
/**
1012
* The root CSSList of a parsed file. Contains all top-level css contents, mostly declaration blocks,
@@ -83,6 +85,7 @@ public function getAllValues($mElement = null, $bSearchInFunctionArguments = fal
8385
$sSearchString = $mElement;
8486
$mElement = $this;
8587
}
88+
/** @var array<int, Value|CSSString> $aResult */
8689
$aResult = [];
8790
$this->allValues($mElement, $aResult, $sSearchString, $bSearchInFunctionArguments);
8891
return $aResult;

0 commit comments

Comments
 (0)