123456789_123456789_123456789_123456789_123456789_

Class: ActiveSupport::OrderedHash

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, ::Hash
Instance Chain:
self, ::Hash
Inherits: Hash
Defined in: activesupport/lib/active_support/ordered_hash.rb

Overview

OrderedHash implements a hash that preserves insertion order.

oh = ActiveSupport::OrderedHash.new
oh[:a] = 1
oh[:b] = 2
oh.keys # => [:a, :b], this order is guaranteed

Also, maps the omap feature for YAML files (See yaml.org/type/omap.html) to support ordered items when loading from yaml.

OrderedHash is namespaced to prevent conflicts with other implementations.

Class Method Summary

::Hash - Inherited

.from_trusted_xml

Builds a ::Hash from XML just like Hash.from_xml, but also allows ::Symbol and YAML.

.from_xml

Returns a ::Hash containing a collection of pairs when the key is the node name and the value is its content.

Instance Attribute Summary

::Hash - Inherited

#extractable_options?

By default, only instances of ::Hash itself are extractable.

Instance Method Summary

::Hash - Inherited

#assert_valid_keys

Validate all keys in a hash match *valid_keys, raising ArgumentError on a mismatch.

#blank?

A hash is blank if it's empty:

#compact

Returns a hash with non nil values.

#compact!

Replaces current hash with non nil values.

#deep_dup

Returns a deep copy of hash.

#deep_merge

Returns a new hash with self and other_hash merged recursively.

#deep_merge!

Same as deep_merge, but modifies self.

#deep_stringify_keys

Returns a new hash with all keys converted to strings.

#deep_stringify_keys!

Destructively convert all keys to strings.

#deep_symbolize_keys

Returns a new hash with all keys converted to symbols, as long as they respond to to_sym.

#deep_symbolize_keys!

Destructively convert all keys to symbols, as long as they respond to to_sym.

#deep_transform_keys

Returns a new hash with all keys converted by the block operation.

#deep_transform_keys!

Destructively convert all keys by using the block operation.

#except

Returns a hash that includes everything but the given keys.

#except!

Replaces the hash without the given keys.

#extract!

Removes and returns the key/value pairs matching the given keys.

#nested_under_indifferent_access
#reverse_merge

Merges the caller into other_hash.

#reverse_merge!

Destructive reverse_merge.

#reverse_update
#slice

Slice a hash to include only the given keys.

#slice!

Replaces the hash with only the given keys.

#stringify_keys

Returns a new hash with all keys converted to strings.

#stringify_keys!

Destructively convert all keys to strings.

#symbolize_keys

Returns a new hash with all keys converted to symbols, as long as they respond to to_sym.

#symbolize_keys!

Destructively convert all keys to symbols, as long as they respond to to_sym.

#to_options
#to_options!
#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:

#transform_keys

Returns a new hash with all keys converted using the block operation.

#transform_keys!

Destructively convert all keys using the block operations.

#transform_values

Returns a new hash with the results of running block once for every value.

#transform_values!

Destructive transform_values

#with_indifferent_access

Returns an HashWithIndifferentAccess out of its receiver:

Instance Attribute Details

#extractable_options?Boolean (readonly)

Returns true to make sure that this hash is extractable via Array#extract_options!

[ GitHub ]

  
# File 'activesupport/lib/active_support/ordered_hash.rb', line 44

def extractable_options?
  true
end

Instance Method Details

#encode_with(coder)

[ GitHub ]

  
# File 'activesupport/lib/active_support/ordered_hash.rb', line 27

def encode_with(coder)
  coder.represent_seq '!omap', map { |k,v| { k => v } }
end

#nested_under_indifferent_access

[ GitHub ]

  
# File 'activesupport/lib/active_support/ordered_hash.rb', line 39

def nested_under_indifferent_access
  self
end

#reject(*args, &block)

[ GitHub ]

  
# File 'activesupport/lib/active_support/ordered_hash.rb', line 35

def reject(*args, &block)
  dup.tap { |hash| hash.reject!(*args, &block) }
end

#select(*args, &block)

[ GitHub ]

  
# File 'activesupport/lib/active_support/ordered_hash.rb', line 31

def select(*args, &block)
  dup.tap { |hash| hash.select!(*args, &block) }
end

#to_yaml_type

[ GitHub ]

  
# File 'activesupport/lib/active_support/ordered_hash.rb', line 23

def to_yaml_type
  "!tag:yaml.org,2002:omap"
end