Module: OptStruct::ClassMethods
- Defined in:
- lib/opt_struct/class_methods.rb
Instance Method Summary collapse
- #defaults ⇒ Object
- #expect_arguments(*arguments) ⇒ Object
- #expected_arguments ⇒ Object
- #inherited(subclass) ⇒ Object
- #option(key, default = nil, **options) ⇒ Object
- #option_accessor(*keys) ⇒ Object
- #option_reader(*keys) ⇒ Object
- #option_writer(*keys) ⇒ Object
- #options(*keys, **keys_defaults) ⇒ Object
- #required(*keys) ⇒ Object
- #required_keys ⇒ Object
Instance Method Details
#defaults ⇒ Object
50 51 52 |
# File 'lib/opt_struct/class_methods.rb', line 50 def defaults @defaults ||= {} end |
#expect_arguments(*arguments) ⇒ Object
54 55 56 57 |
# File 'lib/opt_struct/class_methods.rb', line 54 def expect_arguments(*arguments) @expected_arguments = arguments attr_accessor *arguments end |
#expected_arguments ⇒ Object
59 60 61 |
# File 'lib/opt_struct/class_methods.rb', line 59 def expected_arguments @expected_arguments || [] end |
#inherited(subclass) ⇒ Object
3 4 5 6 7 |
# File 'lib/opt_struct/class_methods.rb', line 3 def inherited(subclass) instance_variables.each do |v| subclass.send(:instance_variable_set, v, instance_variable_get(v).dup) end end |
#option(key, default = nil, **options) ⇒ Object
35 36 37 38 39 40 |
# File 'lib/opt_struct/class_methods.rb', line 35 def option(key, default = nil, **) default = [:default] if .key?(:default) defaults[key] = default required_keys << key if [:required] option_accessor key end |
#option_accessor(*keys) ⇒ Object
30 31 32 33 |
# File 'lib/opt_struct/class_methods.rb', line 30 def option_accessor(*keys) option_reader *keys option_writer *keys end |
#option_reader(*keys) ⇒ Object
18 19 20 21 22 |
# File 'lib/opt_struct/class_methods.rb', line 18 def option_reader(*keys) keys.each do |key| define_method(key) { [key] } end end |
#option_writer(*keys) ⇒ Object
24 25 26 27 28 |
# File 'lib/opt_struct/class_methods.rb', line 24 def option_writer(*keys) keys.each do |key| define_method("#{key}=") { |value| [key] = value } end end |
#options(*keys, **keys_defaults) ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/opt_struct/class_methods.rb', line 42 def (*keys, **keys_defaults) option_accessor *keys if keys.any? if keys_defaults.any? defaults.merge!(keys_defaults) option_accessor *(keys_defaults.keys - expected_arguments) end end |
#required(*keys) ⇒ Object
13 14 15 16 |
# File 'lib/opt_struct/class_methods.rb', line 13 def required(*keys) required_keys.concat keys option_accessor *keys end |
#required_keys ⇒ Object
9 10 11 |
# File 'lib/opt_struct/class_methods.rb', line 9 def required_keys @required_keys ||= [] end |