Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
c7eb1c1
[TASK] Improve the Composer script naming (#1388)
oliverklee Oct 12, 2025
0adb832
[FEATURE] Add line length code check and fixer (#1392)
oliverklee Nov 16, 2025
f5ad2e7
[TASK] Update the development dependencies (#1381)
oliverklee Nov 16, 2025
7dd2d85
[TASK] Replace deprecated PHP-CS-Fixer rules (#1393)
oliverklee Nov 16, 2025
3f2ec3d
[Dependabot] Bump actions/checkout from 5 to 6 (#1395)
dependabot[bot] Nov 21, 2025
c29c15a
[CLEANUP] Drop PHPDoc type annotations for constants (#1397)
oliverklee Nov 27, 2025
fe29992
[Dependabot] Update phpunit/phpunit requirement from 8.5.48 to 8.5.49…
dependabot[bot] Dec 1, 2025
b01197d
[BUGFIX] Parse calc split over multiple lines (#1399)
scq Dec 2, 2025
9614279
[CLEANUP] Remove unneccesary `@var` PHPDoc annotations (#1402)
scq Dec 2, 2025
8be4011
[FEATURE] Parse container queries (#1400)
scq Dec 2, 2025
e04adbb
[DOCS] Polish the changelog (#1404)
oliverklee Dec 2, 2025
a7e229b
[CLEANUP] Tweak PHPDoc types in calc unit test (#1405)
scq Dec 2, 2025
3f57730
[CLEANUP] Tighten `DeclarationBlock::selectors` type (#1407)
JakeQZ Dec 4, 2025
4a8a1c1
[DOCS] Sort changelog entries in reverse chronological order (#1408)
oliverklee Dec 4, 2025
cb0292d
[TASK] Add coverage metadata to `AtRuleTest` (#1409)
oliverklee Dec 4, 2025
51a3c0a
[TASK] Avoid heredoc in a test (#1410)
oliverklee Dec 4, 2025
dc99bbd
[BUGFIX] Allow order-insensitve `removeDeclarationBlockBySelector` (#…
JakeQZ Dec 4, 2025
00f637f
[TASK] Avoid heredoc in another test (#1411)
oliverklee Dec 5, 2025
e7dcce8
[Dependabot] Update phpunit/phpunit requirement from 8.5.49 to 8.5.50…
dependabot[bot] Dec 6, 2025
49bf66f
[CLEANUP] Clean extra whitespace in CSS selector (#1398)
8ctopus Dec 8, 2025
21712cc
[DOCS] Capitalize 'CSS' in the changelog (#1414)
JakeQZ Dec 8, 2025
400edb2
[DEVELOPER] Disallow 'heredoc' and 'nowdoc' for strings (#1415)
JakeQZ Dec 8, 2025
e6b19f2
[CLEANUP] Extract method `DeclarationBlock::parseSelectors` (#1416)
JakeQZ Dec 9, 2025
d1af3bb
[DOCS] Document how to create git tags (#1417)
oliverklee Dec 9, 2025
a5d1172
[CLEANUP] Tighten `consumeUntil` `$comments` parameter type (#1418)
JakeQZ Dec 9, 2025
8d123a2
[BUGFIX] Allow commas in attributes in `setSelectors` (#1419)
JakeQZ Dec 9, 2025
42502fd
[BUGFIX] Parse comment(s) immediately preceding selector (#1421)
JakeQZ Dec 11, 2025
1b1f91c
[TASK] Add `ParserState::consumeIfComes` method (#1422)
JakeQZ Dec 12, 2025
024f1f3
[Dependabot] Bump actions/cache from 4 to 5 (#1423)
dependabot[bot] Dec 12, 2025
a2c978c
[CLEANUP] Extract method `DeclarationBlock::parseSelector` (#1420)
JakeQZ Dec 12, 2025
dada8f8
[BUGFIX] Improve recovery parsing upon a rogue `}` (#1425)
JakeQZ Dec 13, 2025
c7fb009
[BUGFIX] Skip erroneous `}` when parsing `CSSList` (#1426)
JakeQZ Dec 13, 2025
f129f4c
[CLEANUP] Avoid multiline strings in `CommentTest` (#1428)
oliverklee Dec 14, 2025
704c17f
[TASK] Guard against infinite loop in `parseList` (#1427)
JakeQZ Dec 14, 2025
539c64c
[CLEANUP] Avoid multiline strings in `OutputFormatTest` (#1429)
oliverklee Dec 14, 2025
e94cb16
[TASK] Consume to EOF in `DeclarationBlock::parse()` upon failure (#1…
JakeQZ Dec 15, 2025
e58b67c
[CLEANUP] Reformat the code with the PER-2 configuration (#1391)
oliverklee Dec 15, 2025
18a6467
[CLEANUP] Standardize escaped linefeeds and tabs in literals (#1432)
oliverklee Dec 15, 2025
515317d
[BUGFIX] Reject selector comprising only whitespace (#1433)
JakeQZ Dec 16, 2025
ca51e51
[BUGFIX] Parse comment(s) immediately preceding selector (part 2) (#1…
JakeQZ Dec 16, 2025
fea9a1d
[CLEANUP] Reorder methods in `DeclarationBlockTest` (#1434)
JakeQZ Dec 17, 2025
3500d42
[FEATURE] Provide line number in exception message (#1435)
JakeQZ Dec 17, 2025
0ae1fde
[CLEANUP] Tighten a type annotation in `DeclarationBlockTest` (#1436)
JakeQZ Dec 18, 2025
b74a000
[TASK] Add `getArrayRepresentation()` to `Renderable` (#1447)
JakeQZ Dec 31, 2025
32b7fac
[TASK] Add more stub tests for `getArrayRepresentation()` (#1448)
oliverklee Jan 1, 2026
c82f704
[CLEANUP] Reorder some PHPDoc annotations (#1449)
oliverklee Jan 1, 2026
6604f35
[BUGFIX] Fix test name wording (#1450)
oliverklee Jan 1, 2026
ecde963
[TASK] Add trait for `getArrayRepresentation` to populate `class` (#1…
JakeQZ Jan 2, 2026
80cb4c4
[TASK] Implement `getArrayRepresentation()` for `Size` (#1452)
JakeQZ Jan 3, 2026
b6e4d25
[TASK] Implement `getArrayRepresentation()` for `Comment` (#1454)
oliverklee Jan 3, 2026
7566715
[TASK] Improve exception message for `Value::getArrayRepresentation` …
JakeQZ Jan 4, 2026
0a2c875
[TASK] Implement `getArrayRepresentation()` for `ValueList` (#1455)
JakeQZ Jan 4, 2026
09adec3
[TASK] Implement `RuleValueList::getArrayRepresentation()` (#1457)
JakeQZ Jan 4, 2026
95263d1
[TASK] Implement `CSSFunction::getArrayRepresentation()` (#1458)
JakeQZ Jan 4, 2026
7538c81
[TASK] Implement `CSSString::getArrayRepresentation()` (#1459)
oliverklee Jan 4, 2026
1b5be34
[TASK] Add PHP_Codesniffer to CI checks (#1460)
JakeQZ Jan 4, 2026
99217b8
[TASK] Use `getArrayRepresentation()` in `ValueTest` (#1441)
JakeQZ Jan 4, 2026
870a709
[TASK] Order `CSSFunction` array representation logically (#1461)
JakeQZ Jan 5, 2026
3c27af3
[BUGFIX] Loosen the type annotation for `getArrayRepresentation` (#1463)
oliverklee Jan 5, 2026
2b61cd5
[TASK] Implement `URL::getArrayRepresentation()` (#1462)
oliverklee Jan 5, 2026
6f07de2
[CLEANUP] Narrow type of `OutputFormat::stringQuotingType` (#1465)
oliverklee Jan 17, 2026
b36a6ac
[BUGFIX] Do not escape characters that do not need escaping in CSS st…
8ctopus Jan 18, 2026
ae4c5af
[CLEANUP] Refactor and enhance `CSSString::escape()` (#1467)
oliverklee Jan 19, 2026
bea9012
[TASK] Implement `Charset::getArrayRepresentation()` (#1468)
oliverklee Jan 19, 2026
1911017
[TASK] Reorder methods in `SelectorTest` (#1472)
JakeQZ Jan 23, 2026
60271c3
[TASK] Test more valid selectors in `SelectorTest` (#1473)
JakeQZ Jan 23, 2026
7983af6
[CLEANUP] Tighten type annotations in `SelectorTest` (#1474)
JakeQZ Jan 23, 2026
68670ab
[CLEANUP] Simplify tests that use `getArrayRepresenation()` (#1476)
oliverklee Jan 23, 2026
ae80d04
[TASK] Add `Selector::parse()` (#1475)
JakeQZ Jan 23, 2026
21bb0eb
[TASK] Use `Selector::parse()` (#1470)
JakeQZ Jan 23, 2026
0135077
[Dependabot] Update phpunit/phpunit requirement from 8.5.50 to 8.5.51…
dependabot[bot] Jan 24, 2026
6455dd1
[TASK] Have `comsumeWhiteSpace()` return the consumed (#1477)
JakeQZ Jan 24, 2026
416f6a7
[TASK] Implement `Value::getArrayRepresentation()` (#1480)
oliverklee Jan 25, 2026
9641004
[Dependabot] Update phpunit/phpunit requirement from 8.5.51 to 8.5.52…
dependabot[bot] Jan 27, 2026
f78fca5
[TASK] Add `SelectorComponent` interface (#1478)
JakeQZ Jan 29, 2026
ba1dd90
[TASK] Rename `SelectorComponent` to `Component` (#1486)
JakeQZ Jan 31, 2026
9fd06ec
[BUGFIX] Support escaped quotes selector in selectors (#1485)
samuil-banti-wpenigne Feb 3, 2026
46147e2
[TASK] Test escaped quotes in selectors outside of strings (#1489)
JakeQZ Feb 4, 2026
5f1cc1c
[CLEANUP] Combine some test methods in `SelectorTest` (#1490)
JakeQZ Feb 4, 2026
0066316
[CLEANUP] Correct assert argument order in `SelectorTest` (#1491)
JakeQZ Feb 4, 2026
104b94d
[TASK] Add `Selector\Combinator` class (#1487)
JakeQZ Feb 4, 2026
34df8f9
[CLEANUP] Reorder methods in `SelectorTest` (#1492)
JakeQZ Feb 4, 2026
2f99028
[TASK] Add `CompoundSelector` class (#1488)
JakeQZ Feb 4, 2026
6f398f8
[TASK] Use `SelectorComponent` and `Combinator` in `Selector::parse()…
JakeQZ Feb 5, 2026
9dd05ed
[TASK] Extract method `Selector::parseComponents` (#1493)
JakeQZ Feb 5, 2026
b324449
[TASK] Have `Selector\Component` extend `Renderable` (#1494)
JakeQZ Feb 5, 2026
3282587
[TASK] Render selector combinators with surrounding spaces by default…
JakeQZ Feb 5, 2026
600d163
[CLEANUP] Untighten a parameter definition in `SelectorTest` (#1497)
JakeQZ Feb 5, 2026
b67aac0
[TASK] Throw exception upon invalid selector (#1498)
JakeQZ Feb 6, 2026
e4c7f2c
[TASK] Implement `Selector::getArrayRepresentation()` (#1499)
JakeQZ Feb 7, 2026
e57672c
[TASK] Ensure `Selector` content is not whitespace-only (#1502)
JakeQZ Feb 9, 2026
dd1b3de
[CLEANUP] Remove superfluous commented test in `SelectorTest` (#1503)
JakeQZ Feb 9, 2026
8e87b8a
[FEATURE] Represent `Selector` as `Component` objects (#1496)
JakeQZ Feb 9, 2026
252bbe1
[FEATURE] Add `OutputFormat::setSpaceAroundSelectorCombinator()` (#1504)
JakeQZ Feb 10, 2026
1ce3447
[TASK] Rename `Rule::$rule` to `Rule::$propertyName` (#1506)
JakeQZ Feb 12, 2026
802cebe
[TASK] Rename `Rule\Rule` to `Property\Declaration` (#1508)
JakeQZ Feb 12, 2026
4444140
[TASK] Add changelog entry for #1508 (#1510)
JakeQZ Feb 12, 2026
7941744
[TASK] Move/rename Rule/RuleTest.php to Property/DeclarationTest.php …
JakeQZ Feb 12, 2026
27da0c8
[TASK] Use `Property\Declaration` in `CSSBlockList` (#1512)
JakeQZ Feb 12, 2026
399afab
[TASK] Use `Property\Declaration` in `RuleContainer` classes (#1513)
JakeQZ Feb 13, 2026
567e390
[TASK] Use `Property\Declaration` in `DeclarationBlockTest` (#1514)
JakeQZ Feb 13, 2026
32dce4b
[TASK] Use `Property\Declaration` in `ValueTest` DocBlock references …
JakeQZ Feb 14, 2026
b9b78b8
[TASK] Use `Property\Declaration` in `RuleSetTest` (#1516)
JakeQZ Feb 14, 2026
cc48a61
[TASK] Use `Property\Declaration` in `CSSBlockListTest` (#1517)
JakeQZ Feb 14, 2026
fd15e78
[TASK] Use `Property\Declaration` in generic `DeclarationBlockTest` (…
JakeQZ Feb 14, 2026
0a37763
[TASK] Use `Declaration::getPropertyName()` in `RuleSet` (#1519)
JakeQZ Feb 14, 2026
f6ddd48
[TASK] Use `Declaration::getPropertyName()` in tests (#1520)
JakeQZ Feb 14, 2026
e4be5f4
[TASK] Update DocBlock for `RuleContainer` to refer to `Declaration` …
JakeQZ Feb 15, 2026
fa583d8
[CLEANUP] Correct the DocBlock for `RuleSet` (#1523)
JakeQZ Feb 15, 2026
81cc71e
[CLEANUP] Tidy up comments in `RuleSet` (#1524)
JakeQZ Feb 15, 2026
f9424cd
[TASK] Use 'declaration' internally in `RuleSet` (#1525)
JakeQZ Feb 15, 2026
b1d0988
[TASK] Update a code comment in `RuleSet` to use 'declaration' (#1526)
JakeQZ Feb 15, 2026
e8ef816
[TASK] Rename methods in `RuleContainer` (#1521)
JakeQZ Feb 15, 2026
3d9baf9
[TASK] Update to thecodingmachine/safe 3.4 (#1527)
oliverklee Feb 15, 2026
b38597e
[TASK] Use `addDeclaration()` etc. in tests (#1528)
JakeQZ Feb 16, 2026
015a17b
[TASK] Rename `Rule` to `Declatation` in test variables etc. (#1529)
JakeQZ Feb 16, 2026
a3cc167
[TASK] Rename `RuleContainer` to `DeclarationList` (#1530)
JakeQZ Feb 17, 2026
447fcb8
[TASK] Streamline the code checker and fixer configuration (#1535)
oliverklee Feb 17, 2026
34ba5d4
[BUGFIX] Make class aliases available for consumers (#1534)
oliverklee Feb 18, 2026
17dd54a
[BUGFIX] Parse attribute selectors (#1536)
JakeQZ Feb 18, 2026
a32cddc
[BUGFIX] Allow selector combinators in pseudo-class functions (#1537)
JakeQZ Feb 18, 2026
69f4ed8
[FEATURE] Add `phpstan:clearcache` Composer script (#1538)
JakeQZ Feb 19, 2026
eaa13f3
[TASK] Use `DeclarationList` in the source code (#1539)
JakeQZ Feb 20, 2026
cb56b23
[TASK] Use `DeclarationList` in the tests (#1541)
JakeQZ Feb 20, 2026
5937304
[TASK] Prepare release of version 9.2.0 (#1543)
oliverklee Feb 21, 2026
7f85aa8
[TASK] Implement `CSSNamespace::getArrayRepresentation()` (#1544)
oliverklee Feb 22, 2026
707c04e
[TASK] Set code coverage job to not block workflow (#1551)
AnReiter Feb 26, 2026
c4f46fe
[TASK] Allow PHPStan to use unlimited processes (#1550)
oliverklee Feb 26, 2026
4186272
[TASK] Implement `Import::getArrayRepresentation()` (#1554)
oliverklee Feb 28, 2026
fa5eba4
Add support for modern CSS at-rules `@layer`, `@scope`, and `@startin…
samuil-banti-wpenigne Feb 28, 2026
5d342d3
[CLEANUP] Tighten type annotations in `AtRuleBlockListTest` (#1555)
JakeQZ Feb 28, 2026
dfdf183
[CLEANUP] Change `AtRule::BLOCK_RULES` to an array (#1556)
JakeQZ Feb 28, 2026
1b395cb
[BUGFIX] Avoid double autoloading of class aliases (#1552)
oliverklee Mar 3, 2026
88dbd0f
Prepare release of version 9.3.0 (#1558)
oliverklee Mar 3, 2026
44130cf
[TASK] Make aliased class deprecation notices visible to tools (#1559)
JakeQZ Mar 4, 2026
97f2d1f
[TASK] Specify the PHPStan errors to ignore for deprecation notices (…
JakeQZ Mar 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ updates:
interval: "daily"
commit-message:
prefix: "[Dependabot] "
milestone: 10
milestone: 12

- package-ecosystem: "composer"
directory: "/"
Expand All @@ -26,4 +26,4 @@ updates:
versioning-strategy: "increase"
commit-message:
prefix: "[Dependabot] "
milestone: 10
milestone: 12
17 changes: 9 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Install PHP
uses: shivammathur/setup-php@v2
Expand All @@ -34,7 +34,7 @@ jobs:
run: composer config --global --list

- name: Cache dependencies installed with composer
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: ~/.cache/composer
key: php${{ matrix.php-version }}-composer-${{ hashFiles('**/composer.json') }}
Expand All @@ -47,7 +47,7 @@ jobs:
composer show;

- name: PHP Lint
run: composer ci:php:lint
run: composer check:php:lint

unit-tests:
name: Unit tests
Expand All @@ -63,7 +63,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Install PHP
uses: shivammathur/setup-php@v2
Expand All @@ -77,7 +77,7 @@ jobs:
run: composer config --global --list

- name: Cache dependencies installed with composer
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: ~/.cache/composer
key: php${{ matrix.php-version }}-composer-${{ hashFiles('**/composer.json') }}
Expand Down Expand Up @@ -105,14 +105,15 @@ jobs:
command:
- composer:normalize
- php:fixer
- php:codesniffer
- php:stan
- php:rector
php-version:
- '8.3'

steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Install PHP
uses: shivammathur/setup-php@v2
Expand All @@ -126,7 +127,7 @@ jobs:
run: composer config --global --list

- name: Cache dependencies installed with composer
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: ~/.cache/composer
key: php${{ matrix.php-version }}-composer-${{ hashFiles('**/composer.json') }}
Expand All @@ -145,4 +146,4 @@ jobs:
phive --no-progress install --trust-gpg-keys 0FDE18AE1D09E19F60F6B1CBC00543248C87FB13,BBAB5DF0A0D6672989CF1869E82B2FB314E9906E

- name: Run Command
run: composer ci:${{ matrix.command }}
run: composer check:${{ matrix.command }}
8 changes: 5 additions & 3 deletions .github/workflows/codecoverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6

- name: Install PHP
uses: shivammathur/setup-php@v2
Expand All @@ -39,7 +39,7 @@ jobs:
run: composer config --global --list

- name: Cache dependencies installed with composer
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: ~/.cache/composer
key: php${{ matrix.php-version }}-composer-${{ hashFiles('**/composer.json') }}
Expand All @@ -52,13 +52,15 @@ jobs:
composer show;

- name: Run Tests
run: composer ci:tests:coverage
run: composer check:tests:coverage

- name: Show generated coverage files
run: ls -lah

- name: Upload coverage results to Coveralls
uses: coverallsapp/github-action@v2
with:
fail-on-error: false
env:
github-token: ${{ secrets.GITHUB_TOKEN }}
file: coverage.xml
2 changes: 1 addition & 1 deletion .phive/phars.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<phive xmlns="https://phar.io/phive">
<phar name="composer-normalize" version="^2.44.0" installed="2.48.2" location="./.phive/composer-normalize" copy="false"/>
<phar name="php-cs-fixer" version="^3.59.3" installed="3.87.2" location="./.phive/php-cs-fixer" copy="false"/>
<phar name="php-cs-fixer" version="^3.59.3" installed="3.89.2" location="./.phive/php-cs-fixer" copy="false"/>
</phive>
65 changes: 64 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,73 @@ Please also have a look at our

### Fixed

- Use typesafe versions of PHP functions (#1379, #1380, #1382, #1383, #1384)
### Documentation

## 9.3.0: Support for modern CSS at-rules and autoloading bugfix

### Added

- Add support for modern CSS at-rules: `@layer`, `@scope`, and `@starting-style` (#1549)

### Fixed

- Avoid double autoloading of class aliases (#1552)

### Documentation

## 9.2.0: New features and deprecations

### Added

- Add `OutputFormat::setSpaceAroundSelectorCombinator()` (#1504)
- Add support for escaped quotes in the selectors (#1485, #1489)
- Provide line number in exception message for mismatched parentheses in
selector (#1435)
- Add support for CSS container queries (#1400)

### Changed

- `RuleSet\RuleContainer` is renamed to `RuleSet\DeclarationList` (#1530, #1539)
- Methods like `setRule()` in `RuleSet` and `DeclarationBlock` have been renamed
to `setDeclaration()`, etc. (#1521)
- `Rule\Rule` class is renamed to `Property\Declaration`
(#1508, #1512, #1513, #1522)
- `Rule::setRule()` and `getRule()` are replaced with `setPropertyName()` and
`getPropertyName()` (#1506)
- `Selector` is now represented as a sequence of `Selector\Component` objects
which can be accessed via `getComponents()`, manipulated individually, or set
via `setComponents()` (#1478, #1486, #1487, #1488, #1494, #1496, #1536, #1537)
- `Selector::setSelector()` and `Selector` constructor will now throw exception
upon provision of an invalid selectior (#1498, #1502)
- Clean up extra whitespace in CSS selector (#1398)
- The array keys passed to `DeclarationBlock::setSelectors()` are no longer
preserved (#1407)

### Deprecated

- `RuleSet\RuleContainer` is deprecated; use `RuleSet\DeclarationList` instead
(#1530)
- Methods like `setRule()` in `RuleSet` and `DeclarationBlock` are deprecated;
there are direct replacements such as `setDeclaration()` (#1521)
- `Rule\Rule` class is deprecated; `Property\Declaration` is a direct
replacement (#1508)
- `Rule::setRule()` and `getRule()` are deprecated and replaced with
`setPropertyName()` and `getPropertyName()` (#1506, #1519)

### Fixed

- Do not escape characters that do not need escaping in CSS string (#1444)
- Reject selector comprising only whitespace (#1433)
- Improve recovery parsing when a rogue `}` is encountered (#1425, #1426)
- Parse comment(s) immediately preceding a selector (#1421, #1424)
- Parse consecutive comments (#1421)
- Support attribute selectors with values containing commas in
`DeclarationBlock::setSelectors()` (#1419)
- Allow `removeDeclarationBlockBySelector()` to be order-insensitve (#1406)
- Fix parsing of `calc` expressions when a newline immediately precedes or
follows a `+` or `-` operator (#1399)
- Use typesafe versions of PHP functions (#1379, #1380, #1382, #1383, #1384)

## 9.1.0: Add support for PHP 8.5

### Added
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ code coverage of the fixed bugs and the new features.
To run the existing PHPUnit tests, run this command:

```bash
composer ci:tests:unit
composer check:tests:unit
```

## Coding Style
Expand All @@ -94,7 +94,7 @@ We will only merge pull requests that follow the project's coding style.
Please check your code with the provided static code analysis tools:

```bash
composer ci:static
composer check:static
```

Please make your code clean, well-readable and easy to understand.
Expand Down
103 changes: 58 additions & 45 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,19 @@
"require": {
"php": "^7.2.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0",
"ext-iconv": "*",
"thecodingmachine/safe": "^1.3 || ^2.5 || ^3.3"
"thecodingmachine/safe": "^1.3 || ^2.5 || ^3.4"
},
"require-dev": {
"php-parallel-lint/php-parallel-lint": "1.4.0",
"phpstan/extension-installer": "1.4.3",
"phpstan/phpstan": "1.12.28 || 2.1.25",
"phpstan/phpstan-phpunit": "1.4.2 || 2.0.7",
"phpstan/phpstan-strict-rules": "1.6.2 || 2.0.6",
"phpunit/phpunit": "8.5.48",
"phpstan/phpstan": "1.12.32 || 2.1.32",
"phpstan/phpstan-phpunit": "1.4.2 || 2.0.8",
"phpstan/phpstan-strict-rules": "1.6.2 || 2.0.7",
"phpunit/phpunit": "8.5.52",
"rawr/phpunit-data-provider": "3.3.1",
"rector/rector": "1.2.10 || 2.1.7",
"rector/rector": "1.2.10 || 2.2.8",
"rector/type-perfect": "1.0.0 || 2.1.0",
"squizlabs/php_codesniffer": "4.0.1",
"thecodingmachine/phpstan-safe-rule": "1.2.0 || 1.4.1"
},
"suggest": {
Expand All @@ -45,7 +46,11 @@
"autoload": {
"psr-4": {
"Sabberworm\\CSS\\": "src/"
}
},
"files": [
"src/Rule/Rule.php",
"src/RuleSet/RuleContainer.php"
]
},
"autoload-dev": {
"psr-4": {
Expand All @@ -63,66 +68,74 @@
},
"extra": {
"branch-alias": {
"dev-main": "9.2.x-dev"
"dev-main": "9.4.x-dev"
}
},
"scripts": {
"ci": [
"@ci:static",
"@ci:dynamic"
"check": [
"@check:static",
"@check:dynamic"
],
"ci:composer:normalize": "\"./.phive/composer-normalize\" --dry-run",
"ci:dynamic": [
"@ci:tests"
"check:composer:normalize": "\"./.phive/composer-normalize\" --dry-run",
"check:dynamic": [
"@check:tests"
],
"ci:php:fixer": "\"./.phive/php-cs-fixer\" --config=config/php-cs-fixer.php fix --dry-run -v --show-progress=dots --diff bin src tests config",
"ci:php:lint": "parallel-lint src tests config bin",
"ci:php:rector": "rector --no-progress-bar --dry-run --config=config/rector.php",
"ci:php:stan": "phpstan --no-progress --configuration=config/phpstan.neon",
"ci:static": [
"@ci:composer:normalize",
"@ci:php:fixer",
"@ci:php:lint",
"@ci:php:rector",
"@ci:php:stan"
"check:php:codesniffer": "phpcs --standard=config/phpcs.xml bin config src tests",
"check:php:fixer": "\"./.phive/php-cs-fixer\" --config=config/php-cs-fixer.php fix --dry-run -v --show-progress=dots --diff bin config src tests",
"check:php:lint": "parallel-lint bin config src tests",
"check:php:rector": "rector process --no-progress-bar --dry-run --config=config/rector.php",
"check:php:stan": "phpstan --no-progress --configuration=config/phpstan.neon",
"check:static": [
"@check:composer:normalize",
"@check:php:fixer",
"@check:php:codesniffer",
"@check:php:lint",
"@check:php:rector",
"@check:php:stan"
],
"ci:tests": [
"@ci:tests:unit"
"check:tests": [
"@check:tests:unit"
],
"ci:tests:coverage": "phpunit --do-not-cache-result --coverage-clover=coverage.xml",
"ci:tests:sof": "phpunit --stop-on-failure --do-not-cache-result",
"ci:tests:unit": "phpunit --do-not-cache-result",
"check:tests:coverage": "phpunit --do-not-cache-result --coverage-clover=coverage.xml",
"check:tests:sof": "phpunit --stop-on-failure --do-not-cache-result",
"check:tests:unit": "phpunit --do-not-cache-result",
"fix": [
"@fix:php"
],
"fix:composer:normalize": "\"./.phive/composer-normalize\" --no-check-lock",
"fix:php": [
"@fix:composer:normalize",
"@fix:php:rector",
"@fix:php:codesniffer",
"@fix:php:fixer"
],
"fix:php:fixer": "\"./.phive/php-cs-fixer\" --config=config/php-cs-fixer.php fix bin src tests",
"fix:php:rector": "rector --config=config/rector.php",
"phpstan:baseline": "phpstan --configuration=config/phpstan.neon --generate-baseline=config/phpstan-baseline.neon --allow-empty-baseline"
"fix:php:codesniffer": "phpcbf --standard=config/phpcs.xml bin config src tests",
"fix:php:fixer": "\"./.phive/php-cs-fixer\" --config=config/php-cs-fixer.php fix bin config src tests",
"fix:php:rector": "rector process --config=config/rector.php",
"phpstan:baseline": "phpstan --configuration=config/phpstan.neon --generate-baseline=config/phpstan-baseline.neon --allow-empty-baseline",
"phpstan:clearcache": "phpstan clear-result-cache"
},
"scripts-descriptions": {
"ci": "Runs all dynamic and static code checks.",
"ci:composer:normalize": "Checks the formatting and structure of the composer.json.",
"ci:dynamic": "Runs all dynamic code checks (i.e., currently, the unit tests).",
"ci:php:fixer": "Checks the code style with PHP CS Fixer.",
"ci:php:lint": "Checks the syntax of the PHP code.",
"ci:php:rector": "Checks the code for possible code updates and refactoring.",
"ci:php:stan": "Checks the types with PHPStan.",
"ci:static": "Runs all static code analysis checks for the code.",
"ci:tests": "Runs all dynamic tests (i.e., currently, the unit tests).",
"ci:tests:coverage": "Runs the unit tests with code coverage.",
"ci:tests:sof": "Runs the unit tests and stops at the first failure.",
"ci:tests:unit": "Runs all unit tests.",
"check": "Runs all dynamic and static code checks.",
"check:composer:normalize": "Checks the formatting and structure of the composer.json.",
"check:dynamic": "Runs all dynamic code checks (i.e., currently, the unit tests).",
"check:php:codesniffer": "Checks the code style with PHP_CodeSniffer.",
"check:php:fixer": "Checks the code style with PHP CS Fixer.",
"check:php:lint": "Checks the syntax of the PHP code.",
"check:php:rector": "Checks the code for possible code updates and refactoring.",
"check:php:stan": "Checks the types with PHPStan.",
"check:static": "Runs all static code analysis checks for the code.",
"check:tests": "Runs all dynamic tests (i.e., currently, the unit tests).",
"check:tests:coverage": "Runs the unit tests with code coverage.",
"check:tests:sof": "Runs the unit tests and stops at the first failure.",
"check:tests:unit": "Runs all unit tests.",
"fix": "Runs all fixers",
"fix:composer:normalize": "Reformats and sorts the composer.json file.",
"fix:php": "Autofixes all autofixable issues in the PHP code.",
"fix:php:codesniffer": "Reformats the code with PHP_CodeSniffer.",
"fix:php:fixer": "Fixes autofixable issues found by PHP CS Fixer.",
"fix:php:rector": "Fixes autofixable issues found by Rector.",
"phpstan:baseline": "Updates the PHPStan baseline file to match the code."
"phpstan:baseline": "Updates the PHPStan baseline file to match the code.",
"phpstan:clearcache": "Clears the PHPStan cache."
}
}
Loading