Sha256: ef38be8ed3698896af5d419a16c6a6602a7931bd89d9f577eea28a17d06161d0
Contents?: true
Size: 1.57 KB
Versions: 1
Compression:
Stored size: 1.57 KB
Contents
# frozen_string_literal: true require 'active_support/core_ext/object/blank' module Bemer class MixinList def initialize(mix) @mix = mix @mixins = nil end def to_a build_mixins end def to_s @mix_as_string ||= to_a.join(' ') end protected attr_reader :mixins def build_mixins return mixins unless mixins.nil? mix = @mix.instance_of?(Hash) ? build_mixins_from_hash : build_mixins_from_array @mixins = mix.flatten.reject(&:blank?).uniq end def build_mixin(mixin) return mixin.split if mixin.instance_of?(String) case mixin when Symbol then Bemer.bem_class(mixin) when Array then build_mixin_from_array(mixin) when Hash then build_mixin_from_hash(mixin) end end def build_mixin_from_hash(mixin) mixin.map do |block, element| next Bemer.bem_class(block, element) unless element.instance_of?(Array) element.map { |elem| Bemer.bem_class(block, elem) } end end def build_mixin_from_array(mixin) block, element = *mixin return Bemer.bem_class(block, element) unless element.instance_of?(Array) element.map { |elem| Bemer.bem_class(block, elem) } end def build_mixins_from_hash @mix.map do |mixin| next if mixin.blank? build_mixin(mixin) end end def build_mixins_from_array Array(@mix).map do |mixin| next if mixin.blank? mixin.instance_of?(Array) ? mixin.map { |mix| build_mixin(mix) } : build_mixin(mixin) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
bemer-0.1.0 | lib/bemer/mixin_list.rb |