Class: OrderedHash

Inherits:
Object show all
Includes:
Enumerable
Defined in:
lib/poolparty/core/ordered_hash.rb

Instance Method Summary collapse

Constructor Details

#initializeOrderedHash

Returns a new instance of OrderedHash.



8
9
10
11
# File 'lib/poolparty/core/ordered_hash.rb', line 8

def initialize
	@h = {}
	@a = []
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(*args) ⇒ Object



68
69
70
# File 'lib/poolparty/core/ordered_hash.rb', line 68

def method_missing(*args)
  @h.send(*args)
end

Instance Method Details

#[](k) ⇒ Object



12
13
14
# File 'lib/poolparty/core/ordered_hash.rb', line 12

def [](k)
	@h[k]
end

#[]=(k, v) ⇒ Object



15
16
17
18
# File 'lib/poolparty/core/ordered_hash.rb', line 15

def []=(k,v)
	@a << k unless @h.has_key?(k)
	@h[k] = v
end

#clearObject



50
51
52
53
# File 'lib/poolparty/core/ordered_hash.rb', line 50

def clear
	@a.clear
	@h.clear
end

#delete(k, &block) ⇒ Object



54
55
56
57
# File 'lib/poolparty/core/ordered_hash.rb', line 54

def delete(k, &block)
	@a.delete k
	@h.delete(k, &block)
end

#delete_if(&block) ⇒ Object



64
65
66
67
# File 'lib/poolparty/core/ordered_hash.rb', line 64

def delete_if(&block)
	reject!(&block)
	self
end

#eachObject



39
40
41
# File 'lib/poolparty/core/ordered_hash.rb', line 39

def each
	@a.each { |k| yield k,@h[k] }
end

#each_keyObject



47
48
49
# File 'lib/poolparty/core/ordered_hash.rb', line 47

def each_key
	@a.each {|k| yield k}
end

#each_valueObject

TODO: Need specs below here



44
45
46
# File 'lib/poolparty/core/ordered_hash.rb', line 44

def each_value
	@a.each {|k| yield(@h[k])}
end

#has_key?(k) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/poolparty/core/ordered_hash.rb', line 27

def has_key?(k)
 
end

#keysObject



24
25
26
# File 'lib/poolparty/core/ordered_hash.rb', line 24

def keys
	map {|k,v| k }
end

#merge(o = {}) ⇒ Object



19
20
21
22
23
# File 'lib/poolparty/core/ordered_hash.rb', line 19

def merge(o={})
	na = dup
	o.each {|k,v| na[k] = v }
	na
end

#merge!(o = {}) ⇒ Object



36
37
38
# File 'lib/poolparty/core/ordered_hash.rb', line 36

def merge!(o={})
	o.each {|k,v| self[k] = v }
end

#reject!Object



58
59
60
61
62
63
# File 'lib/poolparty/core/ordered_hash.rb', line 58

def reject!
	del = []
	each_pair {|k,v| del << k if yield k,v}
	del.each {|k| delete k}
	del.empty? ? nil : self
end

#sizeObject



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

def size
	@h.size
end

#to_hObject



74
75
76
# File 'lib/poolparty/core/ordered_hash.rb', line 74

def to_h
	self
end

#to_hashObject



71
72
73
# File 'lib/poolparty/core/ordered_hash.rb', line 71

def to_hash
	self
end

#to_jsonObject



77
78
79
80
# File 'lib/poolparty/core/ordered_hash.rb', line 77

def to_json
  
  "{#{collect{|k, v| "\"#{k.to_s}\":#{v.to_json}"}.join(',')}}"
end

#valuesObject



30
31
32
# File 'lib/poolparty/core/ordered_hash.rb', line 30

def values
	map {|k,v| v }
end