Comments (2)
here is a working code for computing specificity. It supports everything but the negation pseudo-class:
// in class CSSParser
const
NON_ID_ATTRIBUTES_AND_PSEUDO_CLASSES_RX = '/
(\.[\w]+) # classes
|
\[(\w+) # attributes
|
(\:( # pseudo classes
link|visited|active
|hover|focus
|lang
|target
|enabled|disabled|checked|indeterminate
|root
|nth-child|nth-last-child|nth-of-type|nth-last-of-type
|first-child|last-child|first-of-type|last-of-type
|only-child|only-of-type
|empty|contains
))
/ix',
ELEMENTS_AND_PSEUDO_ELEMENTS_RX = '/
((^|[\s\+\>\~]+)[\w]+ # elements
|
\:{1,2}( # pseudo-elements
after|before
|first-letter|first-line
|selection
)
)/ix';
public static function computeSpecificity($selector)
{
$a = 0;
$b = substr_count($selector, '#');
$c = preg_match_all(self::NON_ID_ATTRIBUTES_AND_PSEUDO_CLASSES_RX, $selector, $matches);
$d = preg_match_all(self::ELEMENTS_AND_PSEUDO_ELEMENTS_RX, $selector, $matches);
return ($a*1000) + ($b*100) + ($c*10) + $d;
}
from php-css-parser.
I’m closing this as I dont’t think there will ever be a merge method.
from php-css-parser.
Related Issues (20)
- Composer scripts invoking PHIVE Phars don't run on Windows HOT 1
- Rename abstract classes to `AbstractFoo` HOT 5
- Add contrubutor guidelines
- Provide an interface for `RuleSet|CSSList|Import|Charset` HOT 1
- Provide an interface for `CSSList|Rule|RuleSet|Value`
- Provide an interface for `AtRuleBlockList|KeyFrame|Charset|CSSNamespace|Import|AtRuleSet|DeclarationBlock`
- Provide an interface for `AtRuleBlockList|KeyFrame|Charset|CSSNamespace|Import|AtRuleSet` HOT 1
- Provide an interface for `CSSList|RuleSet`
- Provide an interface for `RuleValueList|CSSFunction|CSSString|LineName|Size|URL`
- Link the relevant specs/docs from the README
- Set up the infrastructure for class aliases HOT 1
- Fixer does not want EOL at end of empty class/interface HOT 1
- Color names not working with ExpandShorthands HOT 12
- Drop `expandShorthands`/`createShorthands`/`create*Shorthand`/`expand*Shorthand`
- Deprecate/deactivate `expandShorthands`/`createShorthands`/`create*Shorthand`/`expand*Shorthand` HOT 1
- Model named colors as `Color` instances instead of strings HOT 3
- Automate creation of the UML diagram
- Update the `gh-pages` branch with the API documentation whenever we push to `main`
- Add support for CSS Nesting
- Use the development PHP INI on CI
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from php-css-parser.