Class: OptionsResolver
- Inherits:
-
Object
- Object
- OptionsResolver
- Defined in:
- lib/optionsresolver/optionsresolver.rb
Instance Method Summary collapse
- #get_allowed_types(option_key = nil) ⇒ Object
- #get_allowed_values(option_key = nil) ⇒ Object
- #get_default_values(option_key = nil) ⇒ Object
- #get_defined_options ⇒ Object
- #get_missing_options ⇒ Object
- #get_required_options ⇒ Object
-
#initialize ⇒ OptionsResolver
constructor
A new instance of OptionsResolver.
- #is_defined?(option_key) ⇒ Boolean
- #is_missing?(option_key) ⇒ Boolean
- #is_required?(option_key) ⇒ Boolean
- #resolve(data_object) ⇒ Object
- #set_allowed_types(option_key, option_value_types) ⇒ Object
- #set_allowed_values(option_key, option_allowed_value) ⇒ Object
- #set_default(option_key, default_value) ⇒ Object
- #set_defaults(option_default_values) ⇒ Object
- #set_defined(defined_keys) ⇒ Object
- #set_normalizer(option_key, normalizer_value) ⇒ Object
- #set_required(required_keys) ⇒ Object
Constructor Details
#initialize ⇒ OptionsResolver
Returns a new instance of OptionsResolver.
8 9 10 11 12 13 14 15 16 |
# File 'lib/optionsresolver/optionsresolver.rb', line 8 def initialize = [] = [] @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_options ⇒ Object
28 29 30 |
# File 'lib/optionsresolver/optionsresolver.rb', line 28 def end |
#get_missing_options ⇒ Object
60 61 62 63 64 65 |
# File 'lib/optionsresolver/optionsresolver.rb', line 60 def .map do |required_key| next if @default_values.include?(required_key) required_key end.compact end |
#get_required_options ⇒ Object
48 49 50 |
# File 'lib/optionsresolver/optionsresolver.rb', line 48 def end |
#is_defined?(option_key) ⇒ Boolean
32 33 34 |
# File 'lib/optionsresolver/optionsresolver.rb', line 32 def is_defined? option_key .include? option_key end |
#is_missing?(option_key) ⇒ 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
52 53 54 |
# File 'lib/optionsresolver/optionsresolver.rb', line 52 def is_required? option_key .include? option_key end |
#resolve(data_object) ⇒ Object
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 .uniq! # Stringify hash keys data_object = data_object.stringify_keys # Check undefined options data_object.keys # Set default values data_object = data_object # Check missing required options data_object # Check invalid options type data_object # Check invalid options value data_object # Normalizer options value data_object = 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
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) .concat defined_keys else .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) .concat required_keys .concat required_keys else .push required_keys .push required_keys end self end |