class SparkComponents::Attributes::Classname

Public Class Methods

new(*args, &block) click to toggle source
Calls superclass method
# File lib/spark_components/attributes.rb, line 49
def initialize(*args, &block)
  super(*args, &block)
  @base_set = false
end

Public Instance Methods

add(*args) click to toggle source
# File lib/spark_components/attributes.rb, line 87
def add(*args)
  push(*args.flatten.uniq.reject { |a| a.nil? || include?(a) })
  self
end
base() click to toggle source
# File lib/spark_components/attributes.rb, line 78
def base
  first if @base_set
end
base=(klass) click to toggle source

Many elements have a base class which defines core utlitiy This classname may serve as a root for other element classnames and should be distincly accessible

For example:

classes = Classname.new
classes.base = 'nav__item'
now generate a wrapper: "#{classes.base}__wrapper"

Ensure base class is the first element in the classes array.

# File lib/spark_components/attributes.rb, line 65
def base=(klass)
  return if klass.nil? || klass.empty?

  if @base_set
    self[0] = klass
  else
    unshift klass
    @base_set = true
  end

  uniq!
end
join_class(name, separator = "-") click to toggle source
# File lib/spark_components/attributes.rb, line 104
def join_class(name, separator = "-")
  raise(SparkComponents::Attributes::Error, "Base class not defined for `join_class(#{name}, …)`") if base.nil?

  [base, name].join(separator)
end
modifiers() click to toggle source

Returns clasess which are not defined as a base class

# File lib/spark_components/attributes.rb, line 83
def modifiers
  @base_set ? self[1..size] : self
end
new(*args) click to toggle source

Easy assess to create a new Attributes::Classname

# File lib/spark_components/attributes.rb, line 93
def new(*args)
  new_arr = self.class.new

  unless args.empty?
    new_arr.base = args.shift
    new_arr.add(*args)
  end

  new_arr
end
to_s() click to toggle source
# File lib/spark_components/attributes.rb, line 110
def to_s
  join(" ")
end