Module: OptionsHash::ClassMethods
- Defined in:
- lib/options_hash.rb
Instance Method Summary collapse
- #[](key) ⇒ Object
- #class_name ⇒ Object
- #define_attr_readers(object, instance_variable_name = :@options) ⇒ Object
- #inspect ⇒ Object (also: #to_s)
- #keys ⇒ Object
- #option?(key) ⇒ Boolean
- #optional(*options, &block) ⇒ Object
- #optional_keys ⇒ Object
- #options ⇒ Object
- #parse(options) ⇒ Object
- #required(*options, &block) ⇒ Object
- #required_keys ⇒ Object
Instance Method Details
#[](key) ⇒ Object
58 59 60 61 |
# File 'lib/options_hash.rb', line 58 def [] key option? key or raise KeyError, "#{key} is not an option", caller(1) [key] end |
#class_name ⇒ Object
98 99 100 |
# File 'lib/options_hash.rb', line 98 def class_name name || "OptionsHash:#{_inspect[/^#<Class:(\w+)/,1]}" end |
#define_attr_readers(object, instance_variable_name = :@options) ⇒ Object
85 86 87 88 89 90 91 92 93 |
# File 'lib/options_hash.rb', line 85 def define_attr_readers object, instance_variable_name=:@options self.freeze instance_variable_name = "@#{instance_variable_name.to_s.sub(/@/,'')}" keys.each do |key| object.send(:define_method, "#{key}" ) do instance_variable_get(instance_variable_name)[key] end end end |
#inspect ⇒ Object Also known as: to_s
102 103 104 105 106 107 |
# File 'lib/options_hash.rb', line 102 def inspect inspect = super required_keys = self.required_keys.to_a.sort optional_keys = self.optional_keys.to_a.sort "#{class_name}(required: #{required_keys.inspect}, optional: #{optional_keys.inspect})" end |
#keys ⇒ Object
63 64 65 |
# File 'lib/options_hash.rb', line 63 def keys .keys.to_set end |
#option?(key) ⇒ Boolean
54 55 56 |
# File 'lib/options_hash.rb', line 54 def option? key keys.include? key end |
#optional(*options, &block) ⇒ Object
80 81 82 83 |
# File 'lib/options_hash.rb', line 80 def optional *, &block default = extract_default , &block Option.new(false, default), * end |
#optional_keys ⇒ Object
71 72 73 |
# File 'lib/options_hash.rb', line 71 def optional_keys .reject{|key, option| option.required? }.keys.to_set end |
#options ⇒ Object
49 50 51 52 |
# File 'lib/options_hash.rb', line 49 def @options ||= {} (superclass.respond_to?(:options) ? superclass. : {}).merge @options end |
#parse(options) ⇒ Object
43 44 45 46 47 |
# File 'lib/options_hash.rb', line 43 def parse _new rescue ArgumentError => error raise ArgumentError, error., caller(2) end |
#required(*options, &block) ⇒ Object
75 76 77 78 |
# File 'lib/options_hash.rb', line 75 def required *, &block default = extract_default , &block Option.new(true, default), * end |
#required_keys ⇒ Object
67 68 69 |
# File 'lib/options_hash.rb', line 67 def required_keys .select{|key, option| option.required? }.keys.to_set end |