No commit activity in last 3 years
No release in over 3 years
A set of classes for parsing CSS in Ruby. This is a fork of Alex Dunae's project
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 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.

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.