class Spark::Component::Classname

Public Class Methods

new(*args, base: nil, &block) click to toggle source
Calls superclass method
# File lib/spark/component/classname.rb, line 6
def initialize(*args, base: nil, &block)
  super(args, &block)
  self.base = base unless base.nil?
  @base_set = !base.nil?
end

Public Instance Methods

add(*args) click to toggle source
# File lib/spark/component/classname.rb, line 40
def add(*args)
  push(*args.flatten.uniq.reject { |a| a.nil? || include?(a) })
  self
end
base() click to toggle source
# File lib/spark/component/classname.rb, line 36
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/component/classname.rb, line 23
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_base(name, separator = "-") click to toggle source
# File lib/spark/component/classname.rb, line 45
def join_base(name, separator = "-")
  raise(StandardError, "Base class not defined for `join_base(#{name}, …)`") if base.nil?

  [base, name].join(separator)
end
to_s() click to toggle source
# File lib/spark/component/classname.rb, line 51
def to_s
  join(" ")
end