class ATC::Form

Attributes

inputs[RW]
params[R]

Public Class Methods

input(name, type = nil, options = {}) click to toggle source
# File lib/air_traffic_control/form.rb, line 25
def self.input(name, type = nil, options = {})
  @@input_definitions ||= {}
  array = @@input_definitions[self.name].present? ? @@input_definitions[self.name] : []
  array << [name, type, options]
  @@input_definitions[self.name] = array
end
input_definitions() click to toggle source
# File lib/air_traffic_control/form.rb, line 32
def self.input_definitions
  @@input_definitions
end
new(args) click to toggle source
# File lib/air_traffic_control/form.rb, line 6
def initialize(args)
  @params = Rails.version[0].to_i > 4 ? args.to_h.with_indifferent_access : HashWithIndifferentAccess.new(args)
  @inputs = set_inputs
  after_init(@params)
end

Private Instance Methods

after_init(args) click to toggle source

METHODS FOR CHILDREN

# File lib/air_traffic_control/form.rb, line 62
def after_init(args)
  # this method is optionally implemented by children to
  # override default initialization behavior
end
set_input(form_input) click to toggle source
# File lib/air_traffic_control/form.rb, line 50
def set_input(form_input)
  name = form_input[0]
  type = form_input[1]
  options = form_input[2]
  input_value = params[name]
  input = ATC::Input.new(self, name, type, input_value, options)
  self.class.__send__(:attr_accessor, input.variable_name)
  instance_variable_set("@#{input.variable_name.to_s}", input.parsed_value)
  return input
end
set_inputs() click to toggle source
# File lib/air_traffic_control/form.rb, line 38
def set_inputs
  setter = ATC::DirectoryParser.new(current_class_name: self.class.name)
  all_inputs = []
  ATC::Form.input_definitions.each do |class_name, form_inputs|
    next unless setter.relevant_classes.include?(class_name)
    form_inputs.each do |form_input|
      all_inputs << set_input(form_input)
    end
  end
  all_inputs
end