diff options
| author | 2025-10-25 11:22:09 +0200 | |
|---|---|---|
| committer | 2025-10-25 11:22:09 +0200 | |
| commit | 1abb261ceaaa30ca2ad8ed14b0162ed81bb4724a (patch) | |
| tree | 40e5e130abe8458cbcc11738f0fd3c4264791ed4 /lib | |
| parent | f1c91c84ddee0a9f3ef6d0775f630822c184963f (diff) | |
CssXPath: Implement ~ subsequent-sibling (#8154)
* CssXPath: Implement ~ Subsequent-sibling
fix https://github.com/FreshRSS/FreshRSS/issues/8143
Upstream PR https://github.com/phpgt/CssXPath/pull/231
* Use CssXPath release v1.4.0
https://github.com/phpgt/CssXPath/releases/tag/v1.4.0
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/.gitignore | 2 | ||||
| -rw-r--r-- | lib/composer.json | 7 | ||||
| -rw-r--r-- | lib/phpgt/cssxpath/README.md | 10 | ||||
| -rw-r--r-- | lib/phpgt/cssxpath/src/Translator.php | 15 |
4 files changed, 27 insertions, 7 deletions
diff --git a/lib/.gitignore b/lib/.gitignore index d5a49d735..8a1f98bf6 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -12,6 +12,8 @@ marienfressinaud/lib_opml/tests/ phpgt/cssxpath/.* phpgt/cssxpath/composer.json phpgt/cssxpath/CONTRIBUTING.md +phpgt/cssxpath/phpunit.xml +phpgt/cssxpath/SECURITY* phpgt/cssxpath/test/ phpmailer/phpmailer/*oauth* phpmailer/phpmailer/COMMITMENT* diff --git a/lib/composer.json b/lib/composer.json index ee422ccf3..a893c1cdc 100644 --- a/lib/composer.json +++ b/lib/composer.json @@ -12,7 +12,7 @@ ], "require": { "marienfressinaud/lib_opml": "0.5.1", - "phpgt/cssxpath": "v1.3.0", + "phpgt/cssxpath": "v1.4.0", "phpmailer/phpmailer": "6.11.1", "simplepie/simplepie": "dev-freshrss#24cfb0c6d81f81ef110c8257d3464b2649476c77" }, @@ -21,6 +21,9 @@ "vendor-dir": "./" }, "scripts": { - "post-update-cmd": "git clean -d -f -X ." + "post-update-cmd": [ + "git clean -d -ff -X .", + "find . -name '.git' -type d -exec rm -rf {} + || true" + ] } } diff --git a/lib/phpgt/cssxpath/README.md b/lib/phpgt/cssxpath/README.md index 048547442..a1777c423 100644 --- a/lib/phpgt/cssxpath/README.md +++ b/lib/phpgt/cssxpath/README.md @@ -1,5 +1,5 @@ -Translate CSS selectors to XPath queries -======================================== +Translate CSS selectors to XPath queries. +========================================= A lightweight and dependency free CSS to XPath translator. This repository is used to bring modern DOM functionality like [`querySelectorAll()`][qsa] to PHP in the [PHP.Gt/Dom][gt-dom] project. @@ -61,3 +61,9 @@ It's perhaps worth noting that for XML-style matching to work, you must load the [qsa]: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll [gt-dom]: https://www.php.gt/dom + +# Proudly sponsored by + +[JetBrains Open Source sponsorship program](https://www.jetbrains.com/community/opensource/) + +[](https://www.jetbrains.com/community/opensource/) diff --git a/lib/phpgt/cssxpath/src/Translator.php b/lib/phpgt/cssxpath/src/Translator.php index 7bb11265c..e5802fd77 100644 --- a/lib/phpgt/cssxpath/src/Translator.php +++ b/lib/phpgt/cssxpath/src/Translator.php @@ -12,6 +12,7 @@ class Translator { . '|(#(?P<id>[\w-]*))' . '|(\.(?P<class>[\w-]*))' . '|(?P<sibling>\s*\+\s*)' + . '|(?P<subsequentsibling>\s*~\s*)' . "|(\[(?P<attribute>[\w-]*)((?P<attribute_equals>[=~$|^*]+)(?P<attribute_value>(.+\[\]'?)|[^\]]+))*\])+" . '|(?P<descendant>\s+)' . '/'; @@ -24,8 +25,8 @@ class Translator { const EQUALS_STARTS_WITH = "^="; public function __construct( - protected string $cssSelector, - protected string $prefix = ".//", + protected string $cssSelector, + protected string $prefix = ".//", protected bool $htmlMode = true ) { } @@ -198,7 +199,7 @@ class Translator { "[last()]" ); } - break; + break; } break; @@ -235,6 +236,14 @@ class Translator { $hasElement = false; break; + case "subsequentsibling": + array_push( + $xpath, + "/following-sibling::" + ); + $hasElement = false; + break; + case "attribute": if(!$hasElement) { array_push($xpath, "*"); |
