No commit activity in last 3 years
No release in over 3 years
A set of classes for parsing CSS in Ruby.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0

Runtime

 Project Readme

Ruby CSS Parser¶ ↑

Load, parse and cascade CSS rule sets in Ruby.

Setup¶ ↑

Install the gem.

gem install css_parser

Done.

An example¶ ↑

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)

# lookup a rule by a selector
parser.find('#content')
#=> 'font-size: 13px; line-height: 1.2;'

# lookup a rule by a selector and media type
parser.find('#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; }

Testing¶ ↑

You can run the suite of unit tests using rake test.

The download/import tests use WEBrick. The tests set up a temporary server on port 12000 and pull down files from the test/fixtures/ directory.

Tested with Ruby 1.8.7, Ruby 1.9.2, Ruby 1.9.3-preview1, REE 1.8.7 and JRuby 1.6.4.

Credits and code¶ ↑

By Alex Dunae (dunae.ca, e-mail ‘code’ at the same domain), 2007-11.

Project homepage: github.com/alexdunae/css_parser

Thanks to all the wonderful contributors for their updates.

Made on Vancouver Island.