https://github.com/premailer/css_parser
Ruby CSS Parser
https://github.com/premailer/css_parser
Keywords
css-parser ruby
Keywords from Contributors
activejob activerecord mvc crash-reporting nokogiri rubygems inline mail premailer rack
Last synced: about 17 hours ago
JSON representation
Repository metadata
Ruby CSS Parser
- Host: GitHub
- URL: https://github.com/premailer/css_parser
- Owner: premailer
- License: other
- Created: 2009-12-08T17:22:24.000Z (about 16 years ago)
- Default Branch: master
- Last Pushed: 2026-02-23T22:01:22.000Z (8 days ago)
- Last Synced: 2026-02-25T21:33:29.109Z (6 days ago)
- Topics: css-parser, ruby
- Language: Ruby
- Homepage:
- Size: 658 KB
- Stars: 287
- Watchers: 9
- Forks: 111
- Open Issues: 23
- Releases: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: MIT-LICENSE
README.md
Ruby CSS Parser

Load, parse and cascade CSS rule sets in Ruby.
Setup
gem install css_parser
Usage
require 'css_parser'
include CssParser
parser = CssParser::Parser.new
parser.load_uri!('http://example.com/styles/style.css')
parser = CssParser::Parser.new
parser.load_uri!('file://home/user/styles/style.css')
# load a remote file, setting the base_uri and media_types
parser.load_uri!('../style.css', {base_uri: 'http://example.com/styles/inc/', media_types: [:screen, :handheld]})
# load a local file, setting the base_dir and media_types
parser.load_file!('print.css', '~/styles/', :print)
# load a string
parser = CssParser::Parser.new
parser.load_string! 'a { color: hotpink; }'
# lookup a rule by a selector
parser.find_by_selector('#content')
#=> 'font-size: 13px; line-height: 1.2;'
# lookup a rule by a selector and media type
parser.find_by_selector('#content', [:screen, :handheld])
# iterate through selectors by media type
parser.each_selector(:screen) do |selector, declarations, specificity|
...
end
# add a block of CSS
css = <<-EOT
body { margin: 0 1em; }
EOT
parser.add_block!(css)
# output all CSS rules in a single stylesheet
parser.to_s
=> #content { font-size: 13px; line-height: 1.2; }
body { margin: 0 1em; }
# capturing byte offsets within a file
parser.load_uri!('../style.css', {base_uri: 'http://example.com/styles/inc/', capture_offsets: true)
content_rule = parser.find_rule_sets(['#content']).first
content_rule.filename
#=> 'http://example.com/styles/styles.css'
content_rule.offset
#=> 10703..10752
# capturing byte offsets within a string
parser.load_string!('a { color: hotpink; }', {filename: 'index.html', capture_offsets: true)
content_rule = parser.find_rule_sets(['a']).first
content_rule.filename
#=> 'index.html'
content_rule.offset
#=> 0..21
Testing
bundle
bundle exec rake
Runs on Ruby 3.0/JRuby 9.4 or above.
Credits
By Alex Dunae (dunae.ca, e-mail 'code' at the same domain), 2007-11.
License: MIT
Thanks to all the wonderful contributors for their updates.
Made on Vancouver Island.
Owner metadata
- Name: premailer
- Login: premailer
- Email:
- Kind: organization
- Description:
- Website:
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/5750522?v=4
- Repositories: 5
- Last ynced at: 2024-04-21T03:04:42.616Z
- Profile URL: https://github.com/premailer
GitHub Events
Total
- Delete event: 1
- Pull request event: 12
- Fork event: 1
- Issues event: 2
- Watch event: 7
- Issue comment event: 12
- Push event: 11
- Pull request review comment event: 1
- Pull request review event: 5
- Create event: 5
Last Year
- Delete event: 1
- Pull request event: 6
- Fork event: 1
- Watch event: 2
- Issue comment event: 4
- Push event: 5
- Pull request review event: 2
- Create event: 2
Committers metadata
Last synced: about 20 hours ago
Total Commits: 389
Total Committers: 71
Avg Commits per committer: 5.479
Development Distribution Score (DDS): 0.787
Commits in past year: 9
Committers in past year: 4
Avg Commits per committer in past year: 2.25
Development Distribution Score (DDS) in past year: 0.444
| Name | Commits | |
|---|---|---|
| Alex Dunae | a****x@d****a | 83 |
| Michael Grosser | m****l@g****t | 67 |
| Akzhan Abdulin | a****n@g****m | 54 |
| Geremia Taglialatela | t****v@g****m | 15 |
| ojab | o****b@o****u | 15 |
| Alex Dunae | a****x@d****x@d****a | 13 |
| Godwin | g****n@h****m | 12 |
| Tyler Cunnion | t****n@g****m | 9 |
| Nick Plante | n****p@z****g | 7 |
| Steven Daniels | s****8@g****m | 6 |
| Morten Primdahl | m****n@z****m | 6 |
| Simon | s****o@t****o | 5 |
| Dorian Marié | d****n@d****r | 4 |
| George | 3****a | 4 |
| Mark Edmondson | m****n@g****m | 4 |
| martent | m****n@t****e | 4 |
| ju1ius | j****e@l****t | 3 |
| Tres Wong-Godfrey | t****s@c****o | 3 |
| Julien Kirch | c****e@a****t | 3 |
| Leonid Shevtsov | l****d@s****e | 3 |
| Matt Sanford | m****t@m****m | 3 |
| Paul Sokolik | s****k@s****m | 2 |
| Matthew Hicks | m****m@g****m | 2 |
| Kieran | k****r@k****o | 2 |
| Jonathan del Strother | me@d****m | 2 |
| Johnny Shields | j****s@g****m | 2 |
| Jason | m****l@j****k | 2 |
| J Smith | d****a@g****m | 2 |
| Anton Rieder | 1****r | 2 |
| Andy Beckwith | a****h@z****m | 2 |
| and 41 more... | ||
Committer domains:
- zendesk.com: 2
- timcraft.com: 1
- envato.com: 1
- smgt.me: 1
- hacklite.net: 1
- jasonlambert.co.uk: 1
- delstrother.com: 1
- kwest.info: 1
- squareup.com: 1
- mzsanford.com: 1
- shevtsov.me: 1
- archiloque.net: 1
- clean.io: 1
- laposte.net: 1
- thavenius.se: 1
- dorianmarie.fr: 1
- telhaug.no: 1
- zerosum.org: 1
- dunae.ca = alex dunae alex: 1
- ojab.ru: 1
- grosser.it: 1
- seriousorange.com: 1
- boedicker.org: 1
- causes.com: 1
- sympliact.com: 1
- post.cz: 1
- fale.io: 1
- 4angle.com: 1
- ddimitrov.name: 1
- warmlyyours.com: 1
- kublai.com: 1
- logicaltext.com: 1
- willoller.com: 1
- trevreport.org: 1
- rocketbox.in: 1
- scvngr.com: 1
- allm.inc: 1
- pure360.com: 1
- duckinator.net: 1
- oozou.com: 1
- flavorpill.com: 1
- maski.org: 1
- dunae.ca: 1
Issue and Pull Request metadata
Last synced: 5 days ago
Total issues: 42
Total pull requests: 117
Average time to close issues: 10 months
Average time to close pull requests: 4 months
Total issue authors: 36
Total pull request authors: 60
Average comments per issue: 2.45
Average comments per pull request: 1.59
Merged pull request: 91
Bot issues: 0
Bot pull requests: 0
Past year issues: 2
Past year pull requests: 5
Past year average time to close issues: N/A
Past year average time to close pull requests: 2 days
Past year issue authors: 1
Past year pull request authors: 3
Past year average comments per issue: 1.0
Past year average comments per pull request: 0.2
Past year merged pull request: 4
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- stoivo (3)
- ojab (2)
- sarken (2)
- twe4ked (2)
- tagliala (2)
- jonhyman (1)
- jdelStrother (1)
- joevandyk (1)
- marocas (1)
- Mange (1)
- mrueg (1)
- getaaron (1)
- devend711 (1)
- jpbarbosa (1)
- mike-engel (1)
Top Pull Request Authors
- tagliala (17)
- stoivo (15)
- ojab (8)
- grosser (6)
- leonid-shevtsov (6)
- markedmondson (3)
- mogest (2)
- reud (2)
- scouttyg (2)
- george-gca (2)
- jdelStrother (2)
- davidwessman (2)
- timcraft (2)
- aried3r (2)
- devend711 (1)
Top Issue Labels
Top Pull Request Labels
Package metadata
- Total packages: 14
-
Total downloads:
- rubygems: 327,739,465 total
- Total docker downloads: 1,182,742,282
- Total dependent packages: 93 (may contain duplicates)
- Total dependent repositories: 8,621 (may contain duplicates)
- Total versions: 173
- Total maintainers: 4
gem.coop: css_parser
A set of classes for parsing CSS in Ruby.
- Homepage: https://github.com/premailer/css_parser
- Documentation: http://www.rubydoc.info/gems/css_parser/
- Licenses: MIT
- Latest release: 2.0.0 (published 8 days ago)
- Last Synced: 2026-03-01T23:02:33.429Z (1 day ago)
- Versions: 61
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 163,895,412 Total
- Docker Downloads: 591,371,141
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 0.077%
- Downloads: 0.154%
- Docker downloads count: 0.155%
- Maintainers (4)
rubygems.org: css_parser
A set of classes for parsing CSS in Ruby.
- Homepage: https://github.com/premailer/css_parser
- Documentation: http://www.rubydoc.info/gems/css_parser/
- Licenses: MIT
- Latest release: 2.0.0 (published 8 days ago)
- Last Synced: 2026-02-27T22:30:33.209Z (4 days ago)
- Versions: 61
- Dependent Packages: 93
- Dependent Repositories: 8,621
- Downloads: 163,844,053 Total
- Docker Downloads: 591,371,141
-
Rankings:
- Downloads: 0.158%
- Docker downloads count: 0.204%
- Dependent packages count: 0.34%
- Dependent repos count: 0.351%
- Average: 1.168%
- Forks count: 2.492%
- Stargazers count: 3.465%
- Maintainers (4)
proxy.golang.org: github.com/premailer/css_parser
- Homepage:
- Documentation: https://pkg.go.dev/github.com/premailer/css_parser#section-documentation
- Licenses: other
- Latest release: v2.0.0+incompatible (published 8 days ago)
- Last Synced: 2026-02-28T21:01:11.416Z (3 days ago)
- Versions: 40
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Forks count: 2.498%
- Stargazers count: 3.275%
- Average: 6.538%
- Dependent packages count: 9.576%
- Dependent repos count: 10.802%
debian-10: ruby-css-parser
- Homepage: https://github.com/premailer/css_parser
- Documentation: https://packages.debian.org/buster/ruby-css-parser
- Licenses:
- Latest release: 1.6.0-1 (published 20 days ago)
- Last Synced: 2026-02-13T04:20:04.164Z (18 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
ubuntu-20.04: ruby-css-parser
- Homepage: https://github.com/premailer/css_parser
- Licenses: other
- Latest release: 1.6.0-1 (published 18 days ago)
- Last Synced: 2026-02-13T07:12:03.545Z (18 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
ubuntu-23.10: ruby-css-parser
- Homepage: https://github.com/premailer/css_parser
- Licenses:
- Latest release: 1.6.0-2 (published 18 days ago)
- Last Synced: 2026-02-13T18:17:35.445Z (18 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
ubuntu-23.04: ruby-css-parser
- Homepage: https://github.com/premailer/css_parser
- Licenses:
- Latest release: 1.6.0-2 (published 20 days ago)
- Last Synced: 2026-02-11T06:37:33.863Z (20 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
debian-11: ruby-css-parser
- Homepage: https://github.com/premailer/css_parser
- Documentation: https://packages.debian.org/bullseye/ruby-css-parser
- Licenses:
- Latest release: 1.6.0-1 (published 21 days ago)
- Last Synced: 2026-02-13T08:19:15.903Z (18 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
guix: ruby-css-parser
Ruby Cascading Style Sheets (CSS) parser
- Homepage: https://github.com/premailer/css_parser
- Documentation: https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/ruby-xyz.scm#n1416
- Licenses: expat
- Latest release: 1.21.1 (published about 20 hours ago)
- Last Synced: 2026-03-02T18:56:10.996Z (about 20 hours ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
debian-12: ruby-css-parser
- Homepage: https://github.com/premailer/css_parser
- Documentation: https://packages.debian.org/bookworm/ruby-css-parser
- Licenses:
- Latest release: 1.6.0-2 (published 19 days ago)
- Last Synced: 2026-02-12T23:27:36.420Z (19 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
ubuntu-22.04: ruby-css-parser
- Homepage: https://github.com/premailer/css_parser
- Licenses:
- Latest release: 1.6.0-2 (published 18 days ago)
- Last Synced: 2026-02-13T13:14:54.426Z (18 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
debian-13: ruby-css-parser
- Homepage: https://github.com/premailer/css_parser
- Documentation: https://packages.debian.org/trixie/ruby-css-parser
- Licenses:
- Latest release: 1.19.0-1 (published 19 days ago)
- Last Synced: 2026-02-13T13:14:28.046Z (18 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
Dependencies
- addressable 2.8.0
- ast 2.4.1
- benchmark-ips 2.8.4
- bump 0.10.0
- css_parser 1.11.0
- maxitest 3.6.0
- memory_profiler 1.0.0
- minitest 5.12.0
- parallel 1.20.1
- parser 3.0.0.0
- public_suffix 4.0.6
- rainbow 3.0.0
- rake 13.0.3
- regexp_parser 2.0.3
- rexml 3.2.4
- rubocop 1.8.0
- rubocop-ast 1.4.0
- rubocop-rake 0.5.1
- ruby-progressbar 1.11.0
- unicode-display_width 2.0.0
- webrick 1.7.0
- benchmark-ips >= 0 development
- bump >= 0 development
- maxitest >= 0 development
- memory_profiler >= 0 development
- rake >= 0 development
- rubocop ~> 1.8 development
- rubocop-rake >= 0 development
- webrick >= 0 development
- addressable >= 0
- actions/checkout v2 composite
- ruby/setup-ruby v1 composite
Score: 31.134952847163763