Class: OptionsResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/optionsresolver/optionsresolver.rb

Instance Method Summary collapse

Constructor Details

#initializeOptionsResolver

Returns a new instance of OptionsResolver.



8
9
10
11
12
13
14
15
16
# File 'lib/optionsresolver/optionsresolver.rb', line 8

def initialize
  @defined_options = []
  @required_options = []
  @default_values = {}
  @allowed_types = {}
  @allowed_values = {}
  @normalizers = {}
  @previous_default_values = {}
end

Instance Method Details

#get_allowed_types(option_key = nil) ⇒ Object



101
102
103
104
105
# File 'lib/optionsresolver/optionsresolver.rb', line 101

def get_allowed_types option_key = nil
  return @allowed_types unless option_key

  @allowed_types[option_key]
end

#get_allowed_values(option_key = nil) ⇒ Object



113
114
115
116
117
# File 'lib/optionsresolver/optionsresolver.rb', line 113

def get_allowed_values option_key = nil
  return @allowed_values unless option_key

  @allowed_values
end

#get_default_values(option_key = nil) ⇒ Object



89
90
91
92
93
# File 'lib/optionsresolver/optionsresolver.rb', line 89

def get_default_values option_key = nil
  return @default_values unless option_key

  @default_values[option_key]
end

#get_defined_optionsObject



28
29
30
# File 'lib/optionsresolver/optionsresolver.rb', line 28

def get_defined_options
  @defined_options
end

#get_missing_optionsObject



60
61
62
63
64
65
# File 'lib/optionsresolver/optionsresolver.rb', line 60

def get_missing_options
  @required_options.map do |required_key|
    next if @default_values.include?(required_key)
    required_key
  end.compact
end

#get_required_optionsObject



48
49
50
# File 'lib/optionsresolver/optionsresolver.rb', line 48

def get_required_options
  @required_options
end

#is_defined?(option_key) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/optionsresolver/optionsresolver.rb', line 32

def is_defined? option_key
  @defined_options.include? option_key
end

#is_missing?(option_key) ⇒ Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/optionsresolver/optionsresolver.rb', line 56

def is_missing? option_key
  !@default_values.include? option_key
end

#is_required?(option_key) ⇒ Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/optionsresolver/optionsresolver.rb', line 52

def is_required? option_key
  @required_options.include? option_key
end

#resolve(data_object) ⇒ Object

Raises:



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/optionsresolver/optionsresolver.rb', line 125

def resolve data_object
  raise InvalidParameter unless data_object.is_a? Hash

  # Unique @defined_options
  @defined_options.uniq!
  # Stringify hash keys
  data_object = data_object.stringify_keys
  # Check undefined options
  check_undefined_options data_object.keys
  # Set default values
  data_object = set_options_default data_object
  # Check missing required options
  check_missing_required_options data_object
  # Check invalid options type
  check_invalid_options_type data_object
  # Check invalid options value
  check_invalid_options_value data_object
  # Normalizer options value
  data_object = normalizer_options_value data_object

  data_object
end

#set_allowed_types(option_key, option_value_types) ⇒ Object



95
96
97
98
99
# File 'lib/optionsresolver/optionsresolver.rb', line 95

def set_allowed_types option_key, option_value_types
  @allowed_types[option_key] = option_value_types

  self
end

#set_allowed_values(option_key, option_allowed_value) ⇒ Object



107
108
109
110
111
# File 'lib/optionsresolver/optionsresolver.rb', line 107

def set_allowed_values option_key, option_allowed_value
  @allowed_values[option_key] = option_allowed_value

  self
end

#set_default(option_key, default_value) ⇒ Object



67
68
69
70
71
72
73
74
75
# File 'lib/optionsresolver/optionsresolver.rb', line 67

def set_default option_key, default_value
  @previous_default_values[option_key] = @default_values[option_key] if
    @default_values.include? option_key

  @default_values[option_key] = default_value
  self.set_defined option_key

  self
end

#set_defaults(option_default_values) ⇒ Object

Raises:



77
78
79
80
81
82
83
84
85
86
87
# File 'lib/optionsresolver/optionsresolver.rb', line 77

def set_defaults option_default_values
  raise InvalidParameter unless option_default_values.is_a? Hash

  option_default_values.each do |opt_key, opt_value|
    opt_key = opt_key.to_s

    self.set_default(opt_key, opt_value).set_defined opt_key
  end

  self
end

#set_defined(defined_keys) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/optionsresolver/optionsresolver.rb', line 18

def set_defined defined_keys
  if defined_keys.is_a?(Array)
    @defined_options.concat defined_keys
  else
    @defined_options.push defined_keys
  end

  self
end

#set_normalizer(option_key, normalizer_value) ⇒ Object



119
120
121
122
123
# File 'lib/optionsresolver/optionsresolver.rb', line 119

def set_normalizer option_key, normalizer_value
  @normalizers[option_key] = normalizer_value

  self
end

#set_required(required_keys) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/optionsresolver/optionsresolver.rb', line 36

def set_required required_keys
  if required_keys.is_a?(Array)
    @required_options.concat required_keys
    @defined_options.concat required_keys
  else
    @required_options.push required_keys
    @defined_options.push required_keys
  end

  self
end