class Spark::Component::Attr
Public Class Methods
new(*args, prefix: nil)
click to toggle source
Calls superclass method
# File lib/spark/component/attr.rb, line 6 def initialize(*args, prefix: nil) super(*args) @prefix = prefix end
Public Instance Methods
add(hash)
click to toggle source
# File lib/spark/component/attr.rb, line 11 def add(hash) return self if hash.nil? || hash.keys.empty? deep_compact!(hash) dasherize_keys(hash) merge!(hash) self end
to_s()
click to toggle source
Output all attributes as [prefix-]name=“value”
# File lib/spark/component/attr.rb, line 21 def to_s each_with_object([]) do |(name, value), array| if value.is_a?(Component::Attr) # Flatten nested hashs and inject them unless empty value = value.to_s array << value unless value.empty? else name = [@prefix, name].compact.join("-").gsub(/[\W_]+/, "-") array << %(#{name}="#{value}") unless value.nil? end end.sort.join(" ") end
Private Instance Methods
dasherize_keys(hash)
click to toggle source
# File lib/spark/component/attr.rb, line 47 def dasherize_keys(hash) hash.merge!(hash.keys.each_with_object({}) do |key, obj| obj[key.to_s.gsub(/[\W_]+/, "-")] = hash.delete(key) if key.to_s.include?("_") end) end
deep_compact(hash)
click to toggle source
# File lib/spark/component/attr.rb, line 40 def deep_compact(hash) hash.reject do |_key, val| val = deep_compact(val) if val.is_a?(Hash) (val.nil? || val.respond_to?(:empty?) && val.empty?) end end
deep_compact!(hash)
click to toggle source
# File lib/spark/component/attr.rb, line 36 def deep_compact!(hash) hash.replace(deep_compact(hash)) end