Class: RDStation::Builder::Field

Inherits:
Object
  • Object
show all
Defined in:
lib/rdstation/builder/field.rb

Overview

Constant Summary collapse

DATA_TYPES =
%w(STRING INTEGER BOOLEAN STRING[]).freeze
PRESENTATION_TYPES =
%w[TEXT_INPUT TEXT_AREA URL_INPUT PHONE_INPUT
EMAIL_INPUT CHECK_BOX NUMBER_INPUT COMBO_BOX
RADIO_BUTTON MULTIPLE_CHOICE].freeze
REQUIRED_FIELDS =
%w[api_identifier data_type presentation_type label name].freeze

Instance Method Summary collapse

Constructor Details

#initialize(api_identifier) ⇒ Field

Returns a new instance of Field.



14
15
16
17
18
19
20
21
22
# File 'lib/rdstation/builder/field.rb', line 14

def initialize(api_identifier)
  raise 'api_identifier required' unless api_identifier
  unless valid_identifier(api_identifier)
    raise 'api_identifier is not in a valid format, need start with "cf_"'
  end

  @values = {}
  @values['api_identifier'] = api_identifier
end

Instance Method Details

#buildObject



54
55
56
57
58
59
60
61
# File 'lib/rdstation/builder/field.rb', line 54

def build
  empty_fields = REQUIRED_FIELDS.select { |field| @values[field].nil? }
  unless empty_fields.empty?
    raise "Required fields are missing - #{empty_fields}"
  end

  @values
end

#data_type(data_type) ⇒ Object



24
25
26
27
28
# File 'lib/rdstation/builder/field.rb', line 24

def data_type(data_type)
  raise "Not valid data_type - #{DATA_TYPES}" unless DATA_TYPES.include? data_type

  @values['data_type'] = data_type
end

#label(language, label) ⇒ Object



38
39
40
# File 'lib/rdstation/builder/field.rb', line 38

def label(language, label)
  @values['label'] = { language.to_s => label }
end

#name(language, name) ⇒ Object



42
43
44
# File 'lib/rdstation/builder/field.rb', line 42

def name(language, name)
  @values['name'] = { language.to_s => name }
end

#presentation_type(presentation_type) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/rdstation/builder/field.rb', line 30

def presentation_type(presentation_type)
  unless PRESENTATION_TYPES.include? presentation_type
    raise "Not valid presentation_type - #{PRESENTATION_TYPES}"
  end

  @values['presentation_type'] = presentation_type
end

#valid_options(valid_options) ⇒ Object



50
51
52
# File 'lib/rdstation/builder/field.rb', line 50

def valid_options(valid_options)
  @values['valid_options'] = valid_options
end

#validation_rules(validation_rules) ⇒ Object



46
47
48
# File 'lib/rdstation/builder/field.rb', line 46

def validation_rules(validation_rules)
  @values['validation_rules'] = validation_rules
end