DESCRIPTION

Xass extend Rails with namespacing Sass classes

INSTALLATION

We suppose you use Rails with sass-rails.

Gemfile

gem 'xass'

USAGE

Example 1

// /app/assets/stylesheets/application.sass

@import ./main/**/*
// /app/assets/stylesheets/main/hoge/piyo/fuga.sass

.hogehoge
  width: 100px

This emits the following css.

.hoge__piyo__fuga___hogehoge {
  width: 100px;
}

And,

-# /app/views/someview.html.haml

= namespace :hoge, :piyo, :fuga do
  %div{ class: ns(:hogehoge) }

Then, you can apply width: 100px to the div element.

Example 2

You can use root class for convenience.

// /app/assets/stylesheets/application.sass

@import ./main/**/*
// /app/assets/stylesheets/main/hoge/piyo/fuga.sass

.root
  width: 10px

.hogehoge
  width: 100px

This emits the following css.

.hoge__piyo__fuga {
  width: 10px;
}

.hoge__piyo__fuga___hogehoge {
  width: 100px;
}

And,

-# /app/views/someview.html.haml

= namespace :hoge, :piyo, :fuga do
  %div{ class: ns_root }
    %div{ class: ns(:hogehoge) }

You can also write as follows abbreviately.

-# /app/views/someview.html.haml

= namespace_with_root :hoge, :piyo, :fuga do
  %div{ class: ns(:hogehoge) }

Example 3

You can use _ prefix for unnamespaced .

// /app/assets/stylesheets/application.sass

@import ./main/**/*
// /app/assets/stylesheets/main/hoge/piyo/fuga.sass

.root
  width: 10px

.hogehoge
  width: 100px

._current
  background-color: black

This emits the following css.

.hoge__piyo__fuga {
  width: 10px;
}

.hoge__piyo__fuga___hogehoge {
  width: 100px;
}

.current {
  background-color: black;
}