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
55 56 57 |
# File 'lib/opt_struct/class_methods.rb', line 55 def defaults @defaults ||= {} end |
#expect_arguments(*arguments) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/opt_struct/class_methods.rb', line 59 def expect_arguments(*arguments) check_reserved_words(arguments) existing = expected_arguments.count expected_arguments.concat(arguments) arguments.each_with_index do |arg, i| n = i + existing define_method(arg) { @arguments[n] } define_method("#{arg}=") { |value| @arguments[n] = value } end end |
#expected_arguments ⇒ Object
73 74 75 |
# File 'lib/opt_struct/class_methods.rb', line 73 def expected_arguments @expected_arguments ||= [] end |
#inherited(subclass) ⇒ Object
3 4 5 6 7 8 |
# File 'lib/opt_struct/class_methods.rb', line 3 def inherited(subclass) instance_variables.each do |v| ivar = instance_variable_get(v) subclass.send(:instance_variable_set, v, ivar.dup) if ivar end end |
#option(key, default = nil, **options) ⇒ Object
40 41 42 43 44 45 |
# File 'lib/opt_struct/class_methods.rb', line 40 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
35 36 37 38 |
# File 'lib/opt_struct/class_methods.rb', line 35 def option_accessor(*keys) option_reader *keys option_writer *keys end |
#option_reader(*keys) ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/opt_struct/class_methods.rb', line 19 def option_reader(*keys) check_reserved_words(keys) keys.each do |key| define_method(key) { [key] } end end |
#option_writer(*keys) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/opt_struct/class_methods.rb', line 27 def option_writer(*keys) check_reserved_words(keys) keys.each do |key| define_method("#{key}=") { |value| [key] = value } end end |
#options(*keys, **keys_defaults) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/opt_struct/class_methods.rb', line 47 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
14 15 16 17 |
# File 'lib/opt_struct/class_methods.rb', line 14 def required(*keys) required_keys.concat keys option_accessor *keys end |
#required_keys ⇒ Object
10 11 12 |
# File 'lib/opt_struct/class_methods.rb', line 10 def required_keys @required_keys ||= [] end |