Ruby StyleStats

Oriainal StyleStats is a Node.js library to collect CSS statistics!
This gem was port in Ruby

Installation

Add this line to your application's Gemfile:

gem 'style_stats'

And then execute:

$ bundle

Or install it yourself as:

$ gem install style_stats

Usage

$ style_stats path/to/stylesheet.css
┌─────────────────────────────────┬────────────────────────────┐
│ Published                       │ 2015-08-29 22:56:15 +0900  │
├─────────────────────────────────┼────────────────────────────┤
│ Paths                           │ path/to/stylesheet.css     │
├─────────────────────────────────┼────────────────────────────┤
│ Style Sheets                    │ 1                          │
├─────────────────────────────────┼────────────────────────────┤
│ Style Elements                  │ 0                          │
├─────────────────────────────────┼────────────────────────────┤
│ Size                            │ 240B                       │
├─────────────────────────────────┼────────────────────────────┤
│ Data URI Size                   │ 0                          │
├─────────────────────────────────┼────────────────────────────┤
│ Ratio of Data URI Size          │ 0.0%                       │
├─────────────────────────────────┼────────────────────────────┤
│ Gzipped Size                    │ 158B                       │
├─────────────────────────────────┼────────────────────────────┤
│ Rules                           │ 7                          │
├─────────────────────────────────┼────────────────────────────┤
│ Selectors                       │ 12                         │
├─────────────────────────────────┼────────────────────────────┤
│ Simplicity                      │ 58.3%                      │
├─────────────────────────────────┼────────────────────────────┤
│ Average of Identifier           │ 1.250                      │
├─────────────────────────────────┼────────────────────────────┤
│ Most Identifier                 │ 3                          │
├─────────────────────────────────┼────────────────────────────┤
│ Most Identifier Selector        │ .foo .bar .baz             │
├─────────────────────────────────┼────────────────────────────┤
│ Average of Cohesion             │ 1.429                      │
├─────────────────────────────────┼────────────────────────────┤
│ Lowest Cohesion                 │ 2                          │
├─────────────────────────────────┼────────────────────────────┤
│ Lowest Cohesion Selector        │ .foo                       │
├─────────────────────────────────┼────────────────────────────┤
│ Total Unique Font Sizes         │ 2                          │
├─────────────────────────────────┼────────────────────────────┤
│ Unique Font Sizes               │ 12px                       │
│                                 │ 16px                       │
├─────────────────────────────────┼────────────────────────────┤
│ Total Unique Font Families      │ 0                          │
├─────────────────────────────────┼────────────────────────────┤
│ Unique Font Families            │ N/A                        │
├─────────────────────────────────┼────────────────────────────┤
│ Total Unique Colors             │ 3                          │
├─────────────────────────────────┼────────────────────────────┤
│ Unique Colors                   │ #333333                    │
│                                 │ #CCCCCC                    │
│                                 │ RED                        │
├─────────────────────────────────┼────────────────────────────┤
│ ID Selectors                    │ 1                          │
├─────────────────────────────────┼────────────────────────────┤
│ Universal Selectors             │ 1                          │
├─────────────────────────────────┼────────────────────────────┤
│ Unqualified Attribute Selectors │ 1                          │
├─────────────────────────────────┼────────────────────────────┤
│ JavaScript Specific Selectors   │ 0                          │
├─────────────────────────────────┼────────────────────────────┤
│ Important Keywords              │ 1                          │
├─────────────────────────────────┼────────────────────────────┤
│ Float Properties                │ 1                          │
├─────────────────────────────────┼────────────────────────────┤
│ Properties Count                │ color: 4                   │
│                                 │ font-size: 3               │
│                                 │ margin: 2                  │
│                                 │ float: 1                   │
├─────────────────────────────────┼────────────────────────────┤
│ Media Queries                   │ 0                          │
└─────────────────────────────────┴────────────────────────────┘

Specified css file will be analyzed.

# Providing multiple input is also supported.
$ style_stats foo.css bar.css baz.css

CSS files in specified directory will be analyzed.

$ style_stats path/to/dir

Glob input is supported (quotes are required).

$ style_stats 'path/**/*.css'

You can specify a remote CSS file.

$ style_stats http://example.com/css/wisteria.css

If you specify an HTML page, StyleStats will analyze stylesheets and style elements.

$ style_stats http://example.com/

--format option outputs JSON, HTML, Markdown.

$ style_stats foo.css -f <json|html|md>

CLI Reference

Help:

$ style_stats --help
Usage: style_stats [options] <file ...>
    -h, --help                       output usage information
    -V, --version                    output the version number
    -c, --config <path>              set configurations
    -f, --format <format>            set the output format <json|html|md>
    -t, --template <path>            set the template path for output format
    -n, --number                     show only numeral metrics
    -m, --mobile [name]              set the mobile user agent
        --user-anget <string>        set the user agent</string></format></path>

Example:

$ style_stats path/to/stylesheet.css -c style_stats.yml
┌────────────────────────────┬────────┐
│ Style Sheets               │ 1      │
├────────────────────────────┼────────┤
│ Size                       │ 19.0KB │
├────────────────────────────┼────────┤
│ Gzipped Size               │ 3.7KB  │
├────────────────────────────┼────────┤
│ Total Unique Font Families │ 3      │
└────────────────────────────┴────────┘

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake rspec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment. Run bundle exec style_stats to use the gem in this directory, ignoring other installed copies of this gem.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

License

The gem is available as open source under the terms of the MIT License.