Module: Tramway::Forms::Fields::ClassMethods

Defined in:
lib/tramway/forms/fields.rb

Overview

Class methods for defining fields

Instance Method Summary collapse

Instance Method Details

#__ancestor_fields(klass = superclass) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/tramway/forms/fields.rb', line 23

def __ancestor_fields(klass = superclass)
  superklass = klass.superclass

  return {} unless superklass.respond_to?(:fields)

  klass.fields.merge(__ancestor_fields(superklass))
end

#__fieldsObject



19
20
21
# File 'lib/tramway/forms/fields.rb', line 19

def __fields
  @fields.merge(__ancestor_fields)
end

#__initialize_fields(subclass) ⇒ Object



31
32
33
# File 'lib/tramway/forms/fields.rb', line 31

def __initialize_fields(subclass)
  subclass.instance_variable_set(:@fields, {})
end

#__set_fields(attributes) ⇒ Object



13
14
15
16
17
# File 'lib/tramway/forms/fields.rb', line 13

def __set_fields(attributes)
  attributes.each do |(attribute, field_data)|
    @fields.merge! attribute => field_data
  end
end

#fields(**attributes) ⇒ Object



9
10
11
# File 'lib/tramway/forms/fields.rb', line 9

def fields(**attributes)
  attributes.any? ? __set_fields(attributes) : __fields
end