Class: ActiveSupport::OrderedHash

Inherits:
Hash show all
Defined in:
lib/active_support/ordered_hash.rb

Overview

DEPRECATED: ActiveSupport::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.

ActiveSupport::OrderedHash is namespaced to prevent conflicts with other implementations.

Instance Method Summary collapse

Methods inherited from Hash

#as_json, #assert_valid_keys, #compact_blank, #compact_blank!, #deep_dup, #deep_merge, #deep_merge!, #deep_stringify_keys, #deep_stringify_keys!, #deep_symbolize_keys, #deep_symbolize_keys!, #deep_transform_keys, #deep_transform_keys!, #deep_transform_values, #deep_transform_values!, #except, #except!, #extract!, from_trusted_xml, from_xml, #reverse_merge, #reverse_merge!, #slice!, #stringify_keys, #stringify_keys!, #symbolize_keys, #symbolize_keys!, #to_query, #to_xml, #with_indifferent_access

Instance Method Details

#encode_with(coder) ⇒ Object



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

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

#extractable_options?Boolean

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

Returns:

  • (Boolean)


46
47
48
# File 'lib/active_support/ordered_hash.rb', line 46

def extractable_options?
  true
end

#nested_under_indifferent_accessObject



41
42
43
# File 'lib/active_support/ordered_hash.rb', line 41

def nested_under_indifferent_access
  self
end

#reject(*args, &block) ⇒ Object



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

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

#select(*args, &block) ⇒ Object



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

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

#to_yaml_typeObject



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

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