Class: ActiveSupport::InheritableOptions
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
|
|
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
OrderedOptions ,
::Hash
|
|
Instance Chain:
self,
OrderedOptions ,
::Hash
|
|
Inherits: |
ActiveSupport::OrderedOptions
|
Defined in: | activesupport/lib/active_support/ordered_options.rb |
Overview
Inheritable Options
InheritableOptions
provides a constructor to build an OrderedOptions
hash inherited from another hash.
Use this if you already have some hash and you want to create a new one based on it.
h = ActiveSupport::InheritableOptions.new({ girl: 'Mary', boy: 'John' })
h.girl # => 'Mary'
h.boy # => 'John'
If the existing hash has string keys, call Hash#symbolize_keys on it.
h = ActiveSupport::InheritableOptions.new({ 'girl' => 'Mary', 'boy' => 'John' }.symbolize_keys)
h.girl # => 'Mary'
h.boy # => 'John'
Class Method Summary
- .new(parent = nil) ⇒ InheritableOptions constructor
::Hash
- Inherited
.from_trusted_xml | Builds a |
.from_xml | Returns a |
Instance Attribute Summary
OrderedOptions
- Inherited
::Hash
- Inherited
#extractable_options? | By default, only instances of |
Instance Method Summary
- #==(other)
- #each(&block)
- #inheritable_copy
- #inspect
- #key?(key) ⇒ Boolean
- #overridden?(key) ⇒ Boolean
- #pretty_print(pp)
- #to_a
- #to_h
- #to_s
OrderedOptions
- Inherited
::Hash
- Inherited
#assert_valid_keys | Validates all keys in a hash match |
#blank? | A hash is blank if it’s empty: |
#compact_blank! | Removes all blank values from the |
#deep_dup | Returns a deep copy of hash. |
#deep_merge | Returns a new hash with |
#deep_merge! | Same as |
#deep_stringify_keys | Returns a new hash with all keys converted to strings. |
#deep_stringify_keys! | Destructively converts all keys to strings. |
#deep_symbolize_keys | Returns a new hash with all keys converted to symbols, as long as they respond to |
#deep_symbolize_keys! | Destructively converts all keys to symbols, as long as they respond to |
#deep_transform_keys | Returns a new hash with all keys converted by the block operation. |
#deep_transform_keys! | Destructively converts all keys by using the block operation. |
#deep_transform_values | Returns a new hash with all values converted by the block operation. |
#deep_transform_values! | Destructively converts all values by using the block operation. |
#except! | Removes the given keys from hash and returns it. |
#extract! | Removes and returns the key/value pairs matching the given keys. |
#nested_under_indifferent_access | Alias for Hash#with_indifferent_access. |
#reverse_merge | Merges the caller into |
#reverse_merge! | Destructive |
#reverse_update | Alias for Hash#reverse_merge!. |
#slice! | Replaces the hash with only the given keys. |
#stringify_keys | Returns a new hash with all keys converted to strings. |
#stringify_keys! | Destructively converts all keys to strings. |
#symbolize_keys | Returns a new hash with all keys converted to symbols, as long as they respond to |
#symbolize_keys! | Destructively converts all keys to symbols, as long as they respond to |
#to_options | Alias for Hash#symbolize_keys. |
#to_options! | Alias for Hash#symbolize_keys!. |
#to_param | Alias for Hash#to_query. |
#to_query | Returns a string representation of the receiver suitable for use as a URL query string: |
#to_xml | Returns a string containing an XML representation of its receiver: |
#with_defaults | Alias for Hash#reverse_merge. |
#with_defaults! | Alias for Hash#reverse_merge!. |
#with_indifferent_access | Returns an |
Constructor Details
.new(parent = nil) ⇒ InheritableOptions
# File 'activesupport/lib/active_support/ordered_options.rb', line 90
def initialize(parent = nil) @parent = parent if @parent.kind_of?(OrderedOptions) # use the faster _get when dealing with OrderedOptions super() { |h, k| @parent._get(k) } elsif @parent super() { |h, k| @parent[k] } else super() @parent = {} end end
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class ActiveSupport::OrderedOptions
Instance Method Details
#==(other)
[ GitHub ]#each(&block)
[ GitHub ]# File 'activesupport/lib/active_support/ordered_options.rb', line 142
def each(&block) to_h.each(&block) self end
#inheritable_copy
[ GitHub ]# File 'activesupport/lib/active_support/ordered_options.rb', line 134
def inheritable_copy self.class.new(self) end
#inspect
[ GitHub ]# File 'activesupport/lib/active_support/ordered_options.rb', line 111
def inspect "#<#{self.class.name} #{to_h.inspect}>" end
#key?(key) ⇒ Boolean
# File 'activesupport/lib/active_support/ordered_options.rb', line 126
def key?(key) super || @parent.key?(key) end
#overridden?(key) ⇒ Boolean
# File 'activesupport/lib/active_support/ordered_options.rb', line 130
def overridden?(key) !!(@parent && @parent.key?(key) && own_key?(key.to_sym)) end
#pretty_print(pp)
[ GitHub ]# File 'activesupport/lib/active_support/ordered_options.rb', line 119
def pretty_print(pp) pp.pp_hash(to_h) end
#to_a
[ GitHub ]# File 'activesupport/lib/active_support/ordered_options.rb', line 138
def to_a entries end
#to_h
[ GitHub ]# File 'activesupport/lib/active_support/ordered_options.rb', line 103
def to_h @parent.merge(self) end
#to_s
[ GitHub ]# File 'activesupport/lib/active_support/ordered_options.rb', line 115
def to_s to_h.to_s end