classes

classes is a Ruby gem that lets you do:

<div class="<%= classes("notification", "is-danger": alert, "is-info": notice) %>">
  <%= alert || notice %>
</div>

It was inspired by the Classnames npm package.

Install

bundle add classes

Rails

Just start using classes in your views!

Sinatra

First, require classes:

require "classes"

For classic Sinatra apps, you're done.

For modular Sinatra apps, you'll also need to include the helpers:

class App < Sinatra::Base
  helpers Classes::Helpers
end

Now you can start using classes in your views!

Use

The simplest use for classes is to join some strings together:

classes("button", "is-link").to_s # => "button is-link"

A hash makes it easy to conditionally enable classes:

classes("button", "is-link": true, "is-danger": false).to_s # => "button is-link"

classes flattens and de-dupes your classes:

classes(["button", ["button is-link", ["is-link"]]]).to_s # => "button is-link"

You can combine these features as much as you like:

classes(
  :button, # Symbols are converted to strings.
  "is-link is-light",
  { "is-link": true, "is-danger": false },
  [true && "is-link", false && "is-danger"],
  "is-light",
  classes("is-fullwidth": true), # You can nest Classes::ClassList instances.
  " " # Empty or invalid classes are ignored.
).to_s # => "button is-link is-light is-fullwidth"