Skip to content

Fix parsing CSS selectors which contain commas #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: v8.x
Choose a base branch
from

Conversation

westonruter
Copy link
Owner

Previously MyIntervals#138.

I found an issue where a CSS selectors would fail to parse correctly when they contain commas. For example:

.widget:not(.widget_text, .jetpack_widget_social_icons) ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

There should only be one selector here: .widget:not(.widget_text, .jetpack_widget_social_icons) ul. Instead, the parser incorrectly extracts two:

  • .widget:not(.widget_text
  • .jetpack_widget_social_icons) ul

The fix is to add placeholders for expressions contained in parentheses or brackets prior to splitting, and then replace the placeholders with their original values on the split selectors.

westonruter and others added 3 commits July 25, 2018 10:47
…into fix/selector-comma-parsing

* 'master' of https://github.com/sabberworm/PHP-CSS-Parser: (64 commits)
  Preserve casing for CSS var names
  Fix @import's output when there is no media query
  Convert some more code to make use of ParserState::EOF and UnexpectedEOFException
  Trim the Import's media query
  Add forgotten check for document end
  Resolve issues with using exceptions for flow control
  Resolve MyIntervals#176 (comment)
  Add ParserState::EOL and support it in consumeUntil
  Remove trailing newline from the lonely-import test file
  Replace assumption with certainty for EOF when consuming white space
  Fix PHP 5.3 compatibility
  Fix CSSList::replace with object as the new value
  Improve EOF handling + handle lonely import statements
  Fix PHP 7.3 warning when using count() on non-array value
  Remove an extra 'i' char
  Add test for validating keyframe selectors
  Improve the selector validation to support % based steps in a keyframe definition
  Bug fix in parsing size units
  Simplify the CSS validating regex
  Move selector validation outside of the Selector's constructor
  ...
* tag '8.4.0': (132 commits)
  Prepare release 8.4.0
  Test on PHP 8.2-dev
  Fix PHP 8.1 compatibility in ParserState::strsplit()
  Update ci.yml
  Also run PHP-linting with PHP 8.1
  Install the development tools in the CI build the proper way
  Make the tests for `AtRuleBlockList` more fine-grained
  Fix invalid or impossible PHPDoc type annotations
  Make the existing tests for `Document` for fine-grained
  Add and clean up the type annotations for the tests
  Add type annotations for `Settings`
  Add type annotations for `URL`
  Add type annotations for `Size`
  Add more type annotations for `ValueList`
  Add type annotations for `LineName`
  Add type annotations for `PrimitiveValue`
  Add type annotations for `CSSString`
  Fix a typo in a variable name
  Add type annotations for `Color`
  Add type annotations for `CSSFunction`
  ...
…into fix/selector-comma-parsing

* 'master' of https://github.com/sabberworm/PHP-CSS-Parser: (57 commits)
  Update PHP-CS-Fixer and PHPStan
  Update README.md
  Update PHP-CS-Fixer and PHPStan
  Update PHP-CS-Fixer and PHPStan
  Update PHP-CS-Fixer and PHPStan
  Run the tests on CI with all warnings enabled
  Show the Composer configuration in the CI jobs
  Add PHPDoc
  Fixes for CI
  Add missing code after catchup merge
  Fix unit tests
  Code refactor for CI
  Streamline parsing functions
  Re-implement ParserState anchors with dedicated Anchor class
  Add back code that got dropped while resolving conflicts
  Fix indents
  Use PHPUnit 5.x features in the tests
  Add unit tests for interface implementation in `CSSList` classes
  Add more detailed unit tests for `Comment`
  Sync the code documentation from the README to the source files
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant