Method: ProMotion::Styling#set_attribute

Defined in:
lib/ProMotion/view/styling.rb

#set_attribute(element, k, v) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/ProMotion/view/styling.rb', line 10

def set_attribute(element, k, v)
  return element unless element

  if v.is_a?(Hash) && element.respond_to?(k)
    sub_element = element.send(k)
    set_attributes(sub_element, v) if sub_element
  elsif element.respond_to?("#{k}=")
    element.send("#{k}=", v)
  elsif v.is_a?(Array) && element.respond_to?("#{k}") && element.method("#{k}").arity == v.length
    element.send("#{k}", *v)
  else
    # Doesn't respond. Check if snake case.
    if k.to_s.include?("_")
      set_attribute(element, objective_c_method_name(k), v)
    end
  end
  element
end