Module: CS::ParameterProcessor

Defined in:
lib/cs/parameter_processor.rb

Instance Method Summary collapse

Instance Method Details

#process_alias!(params) ⇒ Object



3
4
5
6
7
8
9
10
11
12
# File 'lib/cs/parameter_processor.rb', line 3

def process_alias!(params)
  return if self.class.parameters_alias.nil?

  aliases = params.select { |param| self.class.parameters_alias.include?(param) }
  aliases.each do |alias_to, value|
    alias_for = self.class.parameters_alias[alias_to]
    params[alias_for] = value
    params.delete(alias_to)
  end
end

#process_default_value(name, value, param_option) ⇒ Object



24
25
26
# File 'lib/cs/parameter_processor.rb', line 24

def process_default_value(name, value, param_option)
  value.nil? ? param_option[:default] : value
end

#process_param(name, value, param_option) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/cs/parameter_processor.rb', line 29

def process_param(name, value, param_option)
  retval = value

  # this should be refactored to it's own classes
  retval = process_param_integer(name, value, param_option) if param_option[:type] == Integer
  retval = process_param_boolean(name, value, param_option) if param_option[:type] == Boolean
  retval = process_param_string(name, value, param_option) if param_option[:type] == String
  retval = process_param_time(name, value, param_option) if param_option[:type] == Time
  retval
end

#process_param_boolean(name, value, param_option) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/cs/parameter_processor.rb', line 57

def process_param_boolean(name, value, param_option)
  retval = nil

  if value.nil?
    retval = param_option[:default] ? param_option[:default] : nil
  elsif [0, "0", false, "false"].include?(value)
    retval = 0
  else
    retval = 1
  end

  retval
end

#process_param_integer(name, value, param_option) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/cs/parameter_processor.rb', line 40

def process_param_integer(name, value, param_option)
  if value.kind_of?(Integer)
    retval = value
    retval = process_valid_values(name, value, param_option) if param_option[:valid_values]
    maximum = param_option[:maximum]
    retval = maximum if maximum && retval > maximum
  end

  retval = process_default_value(name, retval, param_option)

  if !value.nil?  && !value.kind_of?(Integer)
    raise ArgumentError, "Received non Integer value for parameter '#{name}'"
  end

  retval
end

#process_param_string(name, value, param_option) ⇒ Object



71
72
73
74
75
76
77
# File 'lib/cs/parameter_processor.rb', line 71

def process_param_string(name, value, param_option)
  retval = value
  retval = process_valid_values(name, value, param_option) if param_option[:valid_values]
  retval = process_default_value(name, retval, param_option)

  retval
end

#process_param_time(name, value, param_option) ⇒ Object

This method prosess assignment for properties with datatype Time. There are 3 type that is valid for this properties:

  • Time

  • Numeric. It will convert this to ruby Time

  • **Obejct that respond to #to_time** and return ruby Time



86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/cs/parameter_processor.rb', line 86

def process_param_time(name, value, param_option)
  retval = value

  if !value.nil?
    retval =  CS::Time.new(value)
  end

  retval = process_default_value(name, retval, param_option)
  retval = process_valid_values(name, value, param_option) if param_option[:valid_values]

  retval
end

#process_valid_values(name, value, param_option) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/cs/parameter_processor.rb', line 14

def process_valid_values(name, value, param_option)
  return value unless param_option[:valid_values]

  if param_option[:valid_values].include?(value)
    value
  elsif !value.nil?
    raise ArgumentError, "Invalid value for parameter '#{name}'"
  end
end