active_hash 0.9.11 → 0.9.12
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +3 -0
- data/README.md +1 -1
- data/lib/active_hash/base.rb +19 -14
- data/lib/active_hash/version.rb +1 -1
- metadata +13 -41
data/CHANGELOG
CHANGED
data/README.md
CHANGED
@@ -339,7 +339,7 @@ Records can be accessed by looking up the field constant:
|
|
339
339
|
>> Country::CANADA
|
340
340
|
=> #<Country:0x10229fb28 @attributes={:name=>"Canada", :id=>2}
|
341
341
|
|
342
|
-
Constants are formed by first stripping all non-word characters and then upcasing the result. This means strings like "Blazing Saddles", "ReBar", "Mike & Ike" and "Ho! Ho! Ho!" become
|
342
|
+
Constants are formed by first stripping all non-word characters and then upcasing the result. This means strings like "Blazing Saddles", "ReBar", "Mike & Ike" and "Ho! Ho! Ho!" become BLAZING_SADDLES, REBAR, MIKE_IKE and HO_HO_HO.
|
343
343
|
|
344
344
|
The field specified as the _enum_accessor_ must contain unique data values.
|
345
345
|
|
data/lib/active_hash/base.rb
CHANGED
@@ -11,8 +11,6 @@ module ActiveHash
|
|
11
11
|
|
12
12
|
class Base
|
13
13
|
|
14
|
-
require 'set'
|
15
|
-
|
16
14
|
if respond_to?(:class_attribute)
|
17
15
|
class_attribute :_data, :dirty
|
18
16
|
else
|
@@ -59,7 +57,7 @@ module ActiveHash
|
|
59
57
|
def data=(array_of_hashes)
|
60
58
|
mark_dirty
|
61
59
|
@records = nil
|
62
|
-
|
60
|
+
reset_record_index
|
63
61
|
self._data = array_of_hashes
|
64
62
|
if array_of_hashes
|
65
63
|
auto_assign_fields(array_of_hashes)
|
@@ -75,7 +73,7 @@ module ActiveHash
|
|
75
73
|
validate_unique_id(record) if dirty
|
76
74
|
mark_dirty
|
77
75
|
|
78
|
-
|
76
|
+
add_to_record_index({ record.id.to_s => @records.length })
|
79
77
|
@records << record
|
80
78
|
end
|
81
79
|
|
@@ -88,20 +86,26 @@ module ActiveHash
|
|
88
86
|
end
|
89
87
|
end
|
90
88
|
|
91
|
-
def
|
92
|
-
@
|
89
|
+
def record_index
|
90
|
+
@record_index ||= {}
|
91
|
+
end
|
92
|
+
|
93
|
+
private :record_index
|
94
|
+
|
95
|
+
def reset_record_index
|
96
|
+
record_index.clear
|
93
97
|
end
|
94
98
|
|
95
|
-
private :
|
99
|
+
private :reset_record_index
|
96
100
|
|
97
|
-
def
|
98
|
-
|
101
|
+
def add_to_record_index(entry)
|
102
|
+
record_index.merge!(entry)
|
99
103
|
end
|
100
104
|
|
101
|
-
private :
|
105
|
+
private :add_to_record_index
|
102
106
|
|
103
107
|
def validate_unique_id(record)
|
104
|
-
raise IdError.new("Duplicate Id found for record #{record.attributes}") if
|
108
|
+
raise IdError.new("Duplicate Id found for record #{record.attributes}") if record_index.has_key?(record.id.to_s)
|
105
109
|
end
|
106
110
|
|
107
111
|
private :validate_unique_id
|
@@ -148,7 +152,7 @@ module ActiveHash
|
|
148
152
|
|
149
153
|
def delete_all
|
150
154
|
mark_dirty
|
151
|
-
|
155
|
+
reset_record_index
|
152
156
|
@records = []
|
153
157
|
end
|
154
158
|
|
@@ -168,7 +172,8 @@ module ActiveHash
|
|
168
172
|
end
|
169
173
|
|
170
174
|
def find_by_id(id)
|
171
|
-
|
175
|
+
index = record_index[id.to_s]
|
176
|
+
index and @records[index]
|
172
177
|
end
|
173
178
|
|
174
179
|
delegate :first, :last, :to => :all
|
@@ -326,7 +331,7 @@ module ActiveHash
|
|
326
331
|
end
|
327
332
|
|
328
333
|
def reload
|
329
|
-
|
334
|
+
reset_record_index
|
330
335
|
self.data = _data
|
331
336
|
mark_clean
|
332
337
|
end
|
data/lib/active_hash/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_hash
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.12
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -26,11 +26,11 @@ authors:
|
|
26
26
|
autorequire:
|
27
27
|
bindir: bin
|
28
28
|
cert_chain: []
|
29
|
-
date: 2012-01-18 00:00:00.
|
29
|
+
date: 2012-01-18 00:00:00.000000000Z
|
30
30
|
dependencies:
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
32
|
name: activesupport
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
+
requirement: &70291036455660 !ruby/object:Gem::Requirement
|
34
34
|
none: false
|
35
35
|
requirements:
|
36
36
|
- - ! '>='
|
@@ -38,15 +38,10 @@ dependencies:
|
|
38
38
|
version: 2.2.2
|
39
39
|
type: :runtime
|
40
40
|
prerelease: false
|
41
|
-
version_requirements:
|
42
|
-
none: false
|
43
|
-
requirements:
|
44
|
-
- - ! '>='
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 2.2.2
|
41
|
+
version_requirements: *70291036455660
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: rspec
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirement: &70291036454000 !ruby/object:Gem::Requirement
|
50
45
|
none: false
|
51
46
|
requirements:
|
52
47
|
- - ~>
|
@@ -54,15 +49,10 @@ dependencies:
|
|
54
49
|
version: 2.2.0
|
55
50
|
type: :development
|
56
51
|
prerelease: false
|
57
|
-
version_requirements:
|
58
|
-
none: false
|
59
|
-
requirements:
|
60
|
-
- - ~>
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: 2.2.0
|
52
|
+
version_requirements: *70291036454000
|
63
53
|
- !ruby/object:Gem::Dependency
|
64
54
|
name: sqlite3
|
65
|
-
requirement: !ruby/object:Gem::Requirement
|
55
|
+
requirement: &70291036451580 !ruby/object:Gem::Requirement
|
66
56
|
none: false
|
67
57
|
requirements:
|
68
58
|
- - ! '>='
|
@@ -70,15 +60,10 @@ dependencies:
|
|
70
60
|
version: '0'
|
71
61
|
type: :development
|
72
62
|
prerelease: false
|
73
|
-
version_requirements:
|
74
|
-
none: false
|
75
|
-
requirements:
|
76
|
-
- - ! '>='
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: '0'
|
63
|
+
version_requirements: *70291036451580
|
79
64
|
- !ruby/object:Gem::Dependency
|
80
65
|
name: activerecord
|
81
|
-
requirement: !ruby/object:Gem::Requirement
|
66
|
+
requirement: &70291036450320 !ruby/object:Gem::Requirement
|
82
67
|
none: false
|
83
68
|
requirements:
|
84
69
|
- - ! '>='
|
@@ -86,15 +71,10 @@ dependencies:
|
|
86
71
|
version: 2.2.2
|
87
72
|
type: :development
|
88
73
|
prerelease: false
|
89
|
-
version_requirements:
|
90
|
-
none: false
|
91
|
-
requirements:
|
92
|
-
- - ! '>='
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
version: 2.2.2
|
74
|
+
version_requirements: *70291036450320
|
95
75
|
- !ruby/object:Gem::Dependency
|
96
76
|
name: appraisal
|
97
|
-
requirement: !ruby/object:Gem::Requirement
|
77
|
+
requirement: &70291036449280 !ruby/object:Gem::Requirement
|
98
78
|
none: false
|
99
79
|
requirements:
|
100
80
|
- - ! '>='
|
@@ -102,12 +82,7 @@ dependencies:
|
|
102
82
|
version: '0'
|
103
83
|
type: :development
|
104
84
|
prerelease: false
|
105
|
-
version_requirements:
|
106
|
-
none: false
|
107
|
-
requirements:
|
108
|
-
- - ! '>='
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
85
|
+
version_requirements: *70291036449280
|
111
86
|
description:
|
112
87
|
email: jeff@zilkey.com
|
113
88
|
executables: []
|
@@ -147,9 +122,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
122
|
- - ! '>='
|
148
123
|
- !ruby/object:Gem::Version
|
149
124
|
version: '0'
|
150
|
-
segments:
|
151
|
-
- 0
|
152
|
-
hash: 4063226138811375373
|
153
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
126
|
none: false
|
155
127
|
requirements:
|
@@ -158,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
158
130
|
version: '0'
|
159
131
|
requirements: []
|
160
132
|
rubyforge_project:
|
161
|
-
rubygems_version: 1.8.
|
133
|
+
rubygems_version: 1.8.10
|
162
134
|
signing_key:
|
163
135
|
specification_version: 3
|
164
136
|
summary: An ActiveRecord-like model that uses a hash or file as a datasource
|