orderedhash 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/install.rb +3 -0
- data/lib/orderedautohash.rb +0 -8
- data/lib/orderedhash.rb +2 -63
- metadata +3 -3
data/install.rb
CHANGED
@@ -37,6 +37,9 @@ def install_rb(srcdir=nil, destdir=nil, mode=nil, bin=nil)
|
|
37
37
|
next if (f = f[srcdir.length+1..-1]) == nil
|
38
38
|
next if (/CVS$/ =~ File.dirname(f))
|
39
39
|
next if f =~ %r/\.lnk/
|
40
|
+
next if f =~ %r/\.svn/
|
41
|
+
next if f =~ %r/\.swp/
|
42
|
+
next if f =~ %r/\.svn/
|
40
43
|
path.push f
|
41
44
|
dir |= [File.dirname(f)]
|
42
45
|
end
|
data/lib/orderedautohash.rb
CHANGED
@@ -4,23 +4,15 @@
|
|
4
4
|
require 'orderedhash' unless defined? OrderedHash
|
5
5
|
|
6
6
|
class AutoOrderedHash < OrderedHash
|
7
|
-
#--{{{
|
8
7
|
def initialize(*args)
|
9
|
-
#--{{{
|
10
8
|
super(*args){|a,k| a[k] = __class__.new(*args)}
|
11
|
-
#--}}}
|
12
9
|
end
|
13
10
|
def class # for nice yaml
|
14
|
-
#--{{{
|
15
11
|
Hash
|
16
|
-
#--}}}
|
17
12
|
end
|
18
13
|
def __class__
|
19
|
-
#--{{{
|
20
14
|
AutoOrderedHash
|
21
|
-
#--}}}
|
22
15
|
end
|
23
|
-
#--}}}
|
24
16
|
end # class AutoOrderedHash
|
25
17
|
|
26
18
|
OrderedAutoHash = AutoOrderedHash
|
data/lib/orderedhash.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
# AUTHOR
|
2
3
|
# jan molic /mig/at/1984/dot/cz/
|
3
4
|
#
|
@@ -9,13 +10,10 @@
|
|
9
10
|
# Andrew Johnson for his suggestions and fixes of Hash[],
|
10
11
|
# merge, to_a, inspect and shift
|
11
12
|
class OrderedHash < ::Hash
|
12
|
-
#--{{{
|
13
13
|
attr_accessor :order
|
14
14
|
|
15
15
|
class << self
|
16
|
-
#--{{{
|
17
16
|
def [] *args
|
18
|
-
#--{{{
|
19
17
|
hsh = OrderedHash.new
|
20
18
|
if Hash === args[0]
|
21
19
|
hsh.replace args[0]
|
@@ -28,118 +26,81 @@ class OrderedHash < ::Hash
|
|
28
26
|
end
|
29
27
|
end
|
30
28
|
hsh
|
31
|
-
#--}}}
|
32
29
|
end
|
33
|
-
#--}}}
|
34
30
|
end
|
35
31
|
def initialize(*a, &b)
|
36
|
-
#--{{{
|
37
32
|
super
|
38
33
|
@order = []
|
39
|
-
#--}}}
|
40
34
|
end
|
41
35
|
def store_only a,b
|
42
|
-
#--{{{
|
43
36
|
store a,b
|
44
|
-
#--}}}
|
45
37
|
end
|
46
38
|
alias orig_store store
|
47
39
|
def store a,b
|
48
|
-
#--{{{
|
49
40
|
@order.push a unless has_key? a
|
50
41
|
super a,b
|
51
|
-
#--}}}
|
52
42
|
end
|
53
43
|
alias []= store
|
54
44
|
def == hsh2
|
55
|
-
#--{{{
|
56
45
|
return false if @order != hsh2.order
|
57
46
|
super hsh2
|
58
|
-
#--}}}
|
59
47
|
end
|
60
48
|
def clear
|
61
|
-
#--{{{
|
62
49
|
@order = []
|
63
50
|
super
|
64
|
-
#--}}}
|
65
51
|
end
|
66
52
|
def delete key
|
67
|
-
#--{{{
|
68
53
|
@order.delete key
|
69
54
|
super
|
70
|
-
#--}}}
|
71
55
|
end
|
72
56
|
def each_key
|
73
|
-
#--{{{
|
74
57
|
@order.each { |k| yield k }
|
75
58
|
self
|
76
|
-
#--}}}
|
77
59
|
end
|
78
60
|
def each_value
|
79
|
-
#--{{{
|
80
61
|
@order.each { |k| yield self[k] }
|
81
62
|
self
|
82
|
-
#--}}}
|
83
63
|
end
|
84
64
|
def each
|
85
|
-
#--{{{
|
86
65
|
@order.each { |k| yield k,self[k] }
|
87
66
|
self
|
88
|
-
#--}}}
|
89
67
|
end
|
90
68
|
alias each_pair each
|
91
69
|
def delete_if
|
92
|
-
#--{{{
|
93
70
|
@order.clone.each { |k|
|
94
|
-
delete k if yield
|
71
|
+
delete k if yield(k)
|
95
72
|
}
|
96
73
|
self
|
97
|
-
#--}}}
|
98
74
|
end
|
99
75
|
def values
|
100
|
-
#--{{{
|
101
76
|
ary = []
|
102
77
|
@order.each { |k| ary.push self[k] }
|
103
78
|
ary
|
104
|
-
#--}}}
|
105
79
|
end
|
106
80
|
def keys
|
107
|
-
#--{{{
|
108
81
|
@order
|
109
|
-
#--}}}
|
110
82
|
end
|
111
83
|
def invert
|
112
|
-
#--{{{
|
113
84
|
hsh2 = Hash.new
|
114
85
|
@order.each { |k| hsh2[self[k]] = k }
|
115
86
|
hsh2
|
116
|
-
#--}}}
|
117
87
|
end
|
118
88
|
def reject &block
|
119
|
-
#--{{{
|
120
89
|
self.dup.delete_if &block
|
121
|
-
#--}}}
|
122
90
|
end
|
123
91
|
def reject! &block
|
124
|
-
#--{{{
|
125
92
|
hsh2 = reject &block
|
126
93
|
self == hsh2 ? nil : hsh2
|
127
|
-
#--}}}
|
128
94
|
end
|
129
95
|
def replace hsh2
|
130
|
-
#--{{{
|
131
96
|
@order = hsh2.keys
|
132
97
|
super hsh2
|
133
|
-
#--}}}
|
134
98
|
end
|
135
99
|
def shift
|
136
|
-
#--{{{
|
137
100
|
key = @order.first
|
138
101
|
key ? [key,delete(key)] : super
|
139
|
-
#--}}}
|
140
102
|
end
|
141
103
|
def unshift k,v
|
142
|
-
#--{{{
|
143
104
|
unless self.include? k
|
144
105
|
@order.unshift k
|
145
106
|
orig_store(k,v)
|
@@ -147,10 +108,8 @@ class OrderedHash < ::Hash
|
|
147
108
|
else
|
148
109
|
false
|
149
110
|
end
|
150
|
-
#--}}}
|
151
111
|
end
|
152
112
|
def push k,v
|
153
|
-
#--{{{
|
154
113
|
unless self.include? k
|
155
114
|
@order.push k
|
156
115
|
orig_store(k,v)
|
@@ -158,61 +117,42 @@ class OrderedHash < ::Hash
|
|
158
117
|
else
|
159
118
|
false
|
160
119
|
end
|
161
|
-
#--}}}
|
162
120
|
end
|
163
121
|
def pop
|
164
|
-
#--{{{
|
165
122
|
key = @order.last
|
166
123
|
key ? [key,delete(key)] : nil
|
167
|
-
#--}}}
|
168
124
|
end
|
169
125
|
def to_a
|
170
|
-
#--{{{
|
171
126
|
ary = []
|
172
127
|
each { |k,v| ary << [k,v] }
|
173
128
|
ary
|
174
|
-
#--}}}
|
175
129
|
end
|
176
130
|
def to_s
|
177
|
-
#--{{{
|
178
131
|
self.to_a.to_s
|
179
|
-
#--}}}
|
180
132
|
end
|
181
133
|
def inspect
|
182
|
-
#--{{{
|
183
134
|
ary = []
|
184
135
|
each {|k,v| ary << k.inspect + "=>" + v.inspect}
|
185
136
|
'{' + ary.join(", ") + '}'
|
186
|
-
#--}}}
|
187
137
|
end
|
188
138
|
def update hsh2
|
189
|
-
#--{{{
|
190
139
|
hsh2.each { |k,v| self[k] = v }
|
191
140
|
self
|
192
|
-
#--}}}
|
193
141
|
end
|
194
142
|
alias :merge! update
|
195
143
|
def merge hsh2
|
196
|
-
#--{{{
|
197
144
|
self.dup update(hsh2)
|
198
|
-
#--}}}
|
199
145
|
end
|
200
146
|
def select
|
201
|
-
#--{{{
|
202
147
|
ary = []
|
203
148
|
each { |k,v| ary << [k,v] if yield k,v }
|
204
149
|
ary
|
205
|
-
#--}}}
|
206
150
|
end
|
207
151
|
def class
|
208
|
-
#--{{{
|
209
152
|
Hash
|
210
|
-
#--}}}
|
211
153
|
end
|
212
154
|
def __class__
|
213
|
-
#--{{{
|
214
155
|
OrderedHash
|
215
|
-
#--}}}
|
216
156
|
end
|
217
157
|
|
218
158
|
attr_accessor "to_yaml_style"
|
@@ -242,5 +182,4 @@ class OrderedHash < ::Hash
|
|
242
182
|
@__yaml_inline = bool
|
243
183
|
end
|
244
184
|
def yaml_inline!() self.yaml_inline = true end
|
245
|
-
#--}}}
|
246
185
|
end # class OrderedHash
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.4
|
3
3
|
specification_version: 1
|
4
4
|
name: orderedhash
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.0.3
|
7
|
+
date: 2007-12-06 00:00:00 -07:00
|
8
8
|
summary: orderedhash
|
9
9
|
require_paths:
|
10
10
|
- lib
|