wherever-positions 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe Wherever, 'with a custom grouping' do
4
+ let(:create_options) { ["keys" => keys, "database" => 'wherever_test', "key_groups" => key_groups, "key" => "trade_id"] }
5
+ let(:wherever) {
6
+ Wherever.new(*create_options) do |values, data, record, keys|
7
+ values["settled"] += data["settled"]
8
+ values["unsettled"] += data["settled"] * -2.5
9
+ end
10
+ }
11
+
12
+ context 'add a record' do
13
+ let(:keys) { ["fund_id"] }
14
+ let(:key_groups) { nil }
15
+ let(:options) { {"unique" => {"trade_id" => 12, "version" => 1}, "keys" => {"fund_id" => 2}} }
16
+
17
+ before do
18
+ wherever.add({"settled" => 100, "unsettled" => 0}, options)
19
+ end
20
+
21
+ it 'the identifier record' do
22
+ wherever.get_key_store("identifier").datasets.should ==
23
+ [DbStore::Dataset.new("values" => {"unsettled" => -250, "settled" => 100}, "fund_id" => 2, "version" => 1, "trade_id" => 12)]
24
+ end
25
+
26
+ it 'the grouped record' do
27
+ wherever.get_key_store("fund").datasets.should ==
28
+ [DbStore::Dataset.new("values" => {"unsettled" => -250, "settled" => 100}, "fund_id" => 2)]
29
+ end
30
+ end
31
+
32
+ context 'get a record' do
33
+ let(:keys) { ["fund_id", "security_id"] }
34
+ let(:key_groups) { ["fund_id"] }
35
+ let(:options_one) { {"unique" => {"trade_id" => 12, "version" => 1}, "keys" => {"fund_id" => 2, "security_id" => 14}} }
36
+ let(:options_two) { {"unique" => {"trade_id" => 15, "version" => 1}, "keys" => {"fund_id" => 2, "security_id" => 14}} }
37
+
38
+ before do
39
+ wherever.add({"settled" => 100, "unsettled" => 0}, options_one)
40
+ end
41
+
42
+ it 'gets the value for a non key field' do
43
+ wherever.get("security_id" => 14).should == {"settled" => 100, "unsettled" => -250}
44
+ end
45
+
46
+ it 'gets the value for a non key field when multiple records' do
47
+ wherever.add({"settled" => 200, "unsettled" => 0}, options_two)
48
+ wherever.get("security_id" => 14).should == {"settled" => 300, "unsettled" => -750}
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,47 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "Wherever" do
4
+ let(:wherever) { Wherever.new("keys" => keys, "database" => 'wherever_test', "key_groups" => key_groups, "key" => "trade_id") }
5
+ let(:keys) { ["fund_id"] }
6
+ let(:key_groups) { nil }
7
+
8
+ context 'getting the record data' do
9
+ before do
10
+ wherever.add({"settled" => 100, "unsettled" => 0}, {"unique" => {"trade_id" => 12, "version" => 2}, "keys" => {"fund_id" => 3}})
11
+ end
12
+
13
+ it 'for one of the key groups' do
14
+ wherever.get("fund_id" => 3).should == {"settled" => 100, "unsettled" => 0}
15
+ end
16
+
17
+ it 'get a value that does not exist' do
18
+ wherever.get("fund_id" => 4).should == {}
19
+ end
20
+ end
21
+
22
+ context 'a more complex example' do
23
+ let(:keys) { ["fund_id", "security_id"] }
24
+ let(:key_groups) { ["fund", ["fund", "security"]] }
25
+ let(:options) { {"unique" => {"trade_id" => 12, "version" => 2}, "keys" => {"fund_id" => 3, "security_id" => 12}} }
26
+
27
+ before do
28
+ wherever.add({"settled" => 100, "unsettled" => 0}, options)
29
+ end
30
+
31
+ it 'get by a single value key' do
32
+ wherever.get("fund_id" => 3).should == {"settled" => 100, "unsettled" => 0}
33
+ end
34
+
35
+ it 'get by a field that is not a key' do
36
+ wherever.get("security_id" => 12).should == {"settled" => 100, "unsettled" => 0}
37
+ end
38
+
39
+ it 'get by a multi value key' do
40
+ wherever.get("fund_id" => 3, "security_id" => 12).should == {"settled" => 100, "unsettled" => 0}
41
+ end
42
+
43
+ it 'invalid selector field' do
44
+ expect { wherever.get("broker_id" => 3) }.to raise_error InvalidSelector, "Unknown Selector: broker_id"
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,23 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "Wherever" do
4
+ let(:wherever) { Wherever.new("keys" => keys, "database" => 'wherever_test', "key_groups" => key_groups, "key" => "trade_id") }
5
+ let(:keys) { ["fund_id"] }
6
+ let(:key_groups) { nil }
7
+
8
+ context 'get the key store' do
9
+ context 'when a single element key' do
10
+ let(:store) { wherever.get_key_store("fund") }
11
+ it 'sets the class name' do
12
+ store.key.should == ["fund"]
13
+ end
14
+ end
15
+
16
+ context 'when a multiple element keys' do
17
+ let(:store) { wherever.get_key_store("fund", "security") }
18
+ it 'sets the class name' do
19
+ store.key.should == ["fund", "security"]
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe Wherever, 'mark a time point' do
4
+ let(:create_options) { ["keys" => keys, "database" => 'wherever_test', "key_groups" => key_groups, "key" => "trade_id"] }
5
+ let(:wherever) {
6
+ Wherever.new(*create_options) do |values, data, record, keys|
7
+ price = wherever.get_price(record.price, record)
8
+ if keys.include?("security_id")
9
+ values["position"] += data["position"] if data
10
+ values["price"] = price
11
+ end
12
+ if data
13
+ values["trade_value"] += data["position"] * price
14
+ else
15
+ values["trade_value"] = values["position"] * price
16
+ end
17
+ end
18
+ }
19
+ let(:keys) { ["fund_id", "security_id"] }
20
+ let(:key_groups) { ["fund", "security", ["fund", "security"]] }
21
+
22
+ let(:options_one) { {"unique" => {"trade_id" => 12, "version" => 1}, "keys" => {"fund_id" => 2, "security_id" => 4}} }
23
+ let(:options_two) { {"unique" => {"trade_id" => 14, "version" => 1}, "keys" => {"fund_id" => 2, "security_id" => 4}} }
24
+
25
+ before do
26
+ wherever.create_lookup('price', ["security_id"])
27
+ wherever.set_price('20111029_01', {4 => 12.5})
28
+ wherever.add({"position" => 100}, options_one)
29
+ wherever.mark('COB 20111009')
30
+ end
31
+
32
+ it 'can retrieve data via marker name' do
33
+ wherever.get({"fund_id" => 2}, 'COB 20111009').should == {"trade_value" => 1250}
34
+ end
35
+
36
+ context 'adding new record' do
37
+ it 'does not change marker record' do
38
+ wherever.add({"position" => 100}, options_two)
39
+ wherever.get({"fund_id" => 2}, 'COB 20111009').should == {"trade_value" => 1250}
40
+ wherever.get({"fund_id" => 2}).should == {"trade_value" => 2500}
41
+ end
42
+ end
43
+
44
+ context 'adding price data' do
45
+ it 'does not change marker record' do
46
+ wherever.set_price('20111029_02', {4 => 13.5})
47
+ wherever.get({"fund_id" => 2}, 'COB 20111009').should == {"trade_value" => 1250}
48
+ wherever.get({"fund_id" => 2}).should == {"trade_value" => 1350}
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Wherever, 'setting values' do
4
+ let(:wherever) { Wherever.new("keys" => keys, "database" => 'wherever_test', "key_groups" => key_groups, "key" => "trade_id") }
5
+ let(:keys) { ["fund_id"] }
6
+ let(:key_groups) { nil }
7
+
8
+ context 'data storage' do
9
+ before do
10
+ wherever.create_lookup('price', ["security_id"])
11
+ end
12
+
13
+ it 'can save and retrieve version data' do
14
+ record = {"security_id" => 12}
15
+ wherever.set_price('current', {12 => 13.45})
16
+ wherever.get_price('current', record).should == 13.45
17
+ end
18
+
19
+ it 'can not set the same version name twice' do
20
+ wherever.set_price('current', {12 => 13.45})
21
+ expect { wherever.set_price('current', {12 => 13.45}) }.to raise_error InvalidLookupSetter, "Lookup 'current' for 'price' already set"
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,101 @@
1
+ require 'spec_helper'
2
+
3
+ describe Wherever, 'using lookup in grouping calculation' do
4
+ let(:create_options) { ["keys" => keys, "database" => 'wherever_test', "key_groups" => key_groups, "key" => "trade_id"] }
5
+ let(:wherever) {
6
+ Wherever.new(*create_options) do |values, data, record, keys|
7
+ price = wherever.get_price(record.price, record)
8
+ if keys.include?("security_id")
9
+ values["position"] += data["position"] if data
10
+ values["price"] = price
11
+ end
12
+ if data
13
+ values["trade_value"] += data["position"] * price
14
+ else
15
+ values["trade_value"] = values["position"] * price
16
+ end
17
+ end
18
+ }
19
+ let(:keys) { ["fund_id", "security_id"] }
20
+ let(:key_groups) { ["fund", "security", ["fund", "security"]] }
21
+
22
+ context 'add record after price' do
23
+ context 'has the correct trade value calculation' do
24
+ let(:options_one) { {"unique" => {"trade_id" => 12, "version" => 1}, "keys" => {"fund_id" => 2, "security_id" => 4}} }
25
+ let(:options_two) { {"unique" => {"trade_id" => 12, "version" => 2}, "keys" => {"fund_id" => 2, "security_id" => 4}} }
26
+ let(:options_three) { {"unique" => {"trade_id" => 14, "version" => 1}, "keys" => {"fund_id" => 2, "security_id" => 4}} }
27
+
28
+ before do
29
+ wherever.create_lookup('price', ["security_id"])
30
+ wherever.set_price('current', {4 => 12.5})
31
+ wherever.add({"position" => 100}, options_one)
32
+ end
33
+
34
+ it 'on identifier record' do
35
+ wherever.get_key_store("identifier").datasets.should ==
36
+ [DbStore::Dataset.new("values" => {"position" => 100, "price" => 12.5, "trade_value" => 1250},
37
+ "trade_id" => 12, "version" => 1, "fund_id" => 2, "security_id" => 4)]
38
+ end
39
+
40
+ it 'on fund record' do
41
+ wherever.get_key_store("fund").datasets.should ==
42
+ [DbStore::Dataset.new("values" => {"trade_value" => 1250}, "fund_id" => 2)]
43
+ end
44
+
45
+ it 'on fund record with trade edit' do
46
+ wherever.add({"position" => 110}, options_two)
47
+ wherever.get_key_store("fund").datasets.should ==
48
+ [DbStore::Dataset.new("values" => {"trade_value" => 1375}, "fund_id" => 2)]
49
+ end
50
+
51
+ it 'on fund record with two trades' do
52
+ wherever.add({"position" => 200}, options_three)
53
+ wherever.get_key_store("fund").datasets.should ==
54
+ [DbStore::Dataset.new("values" => {"trade_value" => 3750}, "fund_id" => 2)]
55
+ end
56
+ end
57
+ end
58
+
59
+ context 'add price after record' do
60
+ context 'has the correct trade value calculation' do
61
+ let(:options_one) { {"unique" => {"trade_id" => 12, "version" => 1}, "keys" => {"fund_id" => 2, "security_id" => 4}} }
62
+ let(:options_two) { {"unique" => {"trade_id" => 12, "version" => 2}, "keys" => {"fund_id" => 2, "security_id" => 4}} }
63
+ let(:options_three) { {"unique" => {"trade_id" => 14, "version" => 1}, "keys" => {"fund_id" => 2, "security_id" => 4}} }
64
+
65
+ before do
66
+ wherever.create_lookup('price', ["security_id"])
67
+ wherever.add({"position" => 100}, options_one)
68
+ end
69
+
70
+ it 'on identifier record' do
71
+ wherever.create_lookup('price', ["security_id"])
72
+ wherever.set_price('current', {4 => 12.5})
73
+ wherever.get_key_store("identifier").datasets.should ==
74
+ [DbStore::Dataset.new("values" => {"position" => 100, "price" => 12.5, "trade_value" => 1250},
75
+ "trade_id" => 12, "version" => 1, "fund_id" => 2, "security_id" => 4)]
76
+ end
77
+
78
+ it 'on fund record' do
79
+ wherever.create_lookup('price', ["security_id"])
80
+ wherever.set_price('current', {4 => 12.5})
81
+ wherever.get_key_store("fund").datasets.should ==
82
+ [DbStore::Dataset.new("values" => {"trade_value" => 1250}, "fund_id" => 2)]
83
+ end
84
+
85
+ it 'on fund record with trade edit' do
86
+ wherever.add({"position" => 110}, options_two)
87
+ wherever.create_lookup('price', ["security_id"])
88
+ wherever.set_price('current', {4 => 12.5})
89
+ wherever.get_key_store("fund").datasets.should ==
90
+ [DbStore::Dataset.new("values" => {"trade_value" => 1375}, "fund_id" => 2)]
91
+ end
92
+
93
+ it 'on fund record with two trades' do
94
+ wherever.add({"position" => 200}, options_three)
95
+ wherever.set_price('current', {4 => 12.5})
96
+ wherever.get_key_store("fund").datasets.should ==
97
+ [DbStore::Dataset.new("values" => {"trade_value" => 3750}, "fund_id" => 2)]
98
+ end
99
+ end
100
+ end
101
+ end
data/wherever.gemspec ADDED
@@ -0,0 +1,98 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{wherever}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["David Henry"]
12
+ s.date = %q{2011-10-30}
13
+ s.description = %q{Allow Store of positions by multiple keys with teh option to mark specific points in time for use later}
14
+ s.email = %q{dw_henry@yahoo.com.au}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".rspec",
22
+ ".rvmrc",
23
+ "Gemfile",
24
+ "Gemfile.lock",
25
+ "LICENSE.txt",
26
+ "README.rdoc",
27
+ "Rakefile",
28
+ "VERSION",
29
+ "features/step_definitions/wherever_steps.rb",
30
+ "features/support/env.rb",
31
+ "features/wherever.feature",
32
+ "lib/wherever.rb",
33
+ "lib/wherever/configure.rb",
34
+ "lib/wherever/db_store.rb",
35
+ "lib/wherever/db_store/dataset.rb",
36
+ "lib/wherever/db_store/identifier.rb",
37
+ "lib/wherever/db_store/lookup.rb",
38
+ "lib/wherever/db_store/marker.rb",
39
+ "lib/wherever/db_store/record_matcher.rb",
40
+ "lib/wherever/db_store/store.rb",
41
+ "lib/wherever/wherever.rb",
42
+ "lib/wherever/wherever/accessors.rb",
43
+ "lib/wherever/wherever/adder.rb",
44
+ "lib/wherever/wherever/getter.rb",
45
+ "lib/wherever/wherever/lookup.rb",
46
+ "lib/wherever/wherever/mark.rb",
47
+ "spec/spec_helper.rb",
48
+ "spec/wherever/adder_spec.rb",
49
+ "spec/wherever/custom_grouping_spec.rb",
50
+ "spec/wherever/getter_spec.rb",
51
+ "spec/wherever/key_store_spec.rb",
52
+ "spec/wherever/mark_spec.rb",
53
+ "spec/wherever/setter_spec.rb",
54
+ "spec/wherever/using_lookup_in_grouping_spec.rb"
55
+ ]
56
+ s.homepage = %q{http://github.com/dw_henry/wherever}
57
+ s.licenses = ["MIT"]
58
+ s.require_paths = ["lib"]
59
+ s.rubygems_version = %q{1.6.2}
60
+ s.summary = %q{Store and Retrieve positions by location}
61
+
62
+ if s.respond_to? :specification_version then
63
+ s.specification_version = 3
64
+
65
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
66
+ s.add_runtime_dependency(%q<bson_ext>, [">= 0"])
67
+ s.add_runtime_dependency(%q<mongoid>, [">= 0"])
68
+ s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
69
+ s.add_development_dependency(%q<cucumber>, [">= 0"])
70
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
71
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
72
+ s.add_development_dependency(%q<rcov>, [">= 0"])
73
+ s.add_development_dependency(%q<ruby-debug>, [">= 0"])
74
+ s.add_development_dependency(%q<database_cleaner>, [">= 0"])
75
+ else
76
+ s.add_dependency(%q<bson_ext>, [">= 0"])
77
+ s.add_dependency(%q<mongoid>, [">= 0"])
78
+ s.add_dependency(%q<rspec>, ["~> 2.3.0"])
79
+ s.add_dependency(%q<cucumber>, [">= 0"])
80
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
81
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
82
+ s.add_dependency(%q<rcov>, [">= 0"])
83
+ s.add_dependency(%q<ruby-debug>, [">= 0"])
84
+ s.add_dependency(%q<database_cleaner>, [">= 0"])
85
+ end
86
+ else
87
+ s.add_dependency(%q<bson_ext>, [">= 0"])
88
+ s.add_dependency(%q<mongoid>, [">= 0"])
89
+ s.add_dependency(%q<rspec>, ["~> 2.3.0"])
90
+ s.add_dependency(%q<cucumber>, [">= 0"])
91
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
92
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
93
+ s.add_dependency(%q<rcov>, [">= 0"])
94
+ s.add_dependency(%q<ruby-debug>, [">= 0"])
95
+ s.add_dependency(%q<database_cleaner>, [">= 0"])
96
+ end
97
+ end
98
+
metadata ADDED
@@ -0,0 +1,234 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wherever-positions
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 1
10
+ version: 0.1.1
11
+ platform: ruby
12
+ authors:
13
+ - David Henry
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-10-30 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: bson_ext
23
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ prerelease: false
33
+ type: :runtime
34
+ requirement: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: mongoid
37
+ version_requirements: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
46
+ prerelease: false
47
+ type: :runtime
48
+ requirement: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: rspec
51
+ version_requirements: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 2
59
+ - 3
60
+ - 0
61
+ version: 2.3.0
62
+ prerelease: false
63
+ type: :development
64
+ requirement: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: cucumber
67
+ version_requirements: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
76
+ prerelease: false
77
+ type: :development
78
+ requirement: *id004
79
+ - !ruby/object:Gem::Dependency
80
+ name: bundler
81
+ version_requirements: &id005 !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ~>
85
+ - !ruby/object:Gem::Version
86
+ hash: 23
87
+ segments:
88
+ - 1
89
+ - 0
90
+ - 0
91
+ version: 1.0.0
92
+ prerelease: false
93
+ type: :development
94
+ requirement: *id005
95
+ - !ruby/object:Gem::Dependency
96
+ name: jeweler
97
+ version_requirements: &id006 !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ~>
101
+ - !ruby/object:Gem::Version
102
+ hash: 7
103
+ segments:
104
+ - 1
105
+ - 6
106
+ - 4
107
+ version: 1.6.4
108
+ prerelease: false
109
+ type: :development
110
+ requirement: *id006
111
+ - !ruby/object:Gem::Dependency
112
+ name: rcov
113
+ version_requirements: &id007 !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ hash: 3
119
+ segments:
120
+ - 0
121
+ version: "0"
122
+ prerelease: false
123
+ type: :development
124
+ requirement: *id007
125
+ - !ruby/object:Gem::Dependency
126
+ name: ruby-debug
127
+ version_requirements: &id008 !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ hash: 3
133
+ segments:
134
+ - 0
135
+ version: "0"
136
+ prerelease: false
137
+ type: :development
138
+ requirement: *id008
139
+ - !ruby/object:Gem::Dependency
140
+ name: database_cleaner
141
+ version_requirements: &id009 !ruby/object:Gem::Requirement
142
+ none: false
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ hash: 3
147
+ segments:
148
+ - 0
149
+ version: "0"
150
+ prerelease: false
151
+ type: :development
152
+ requirement: *id009
153
+ description: Allow Store of positions by multiple keys with teh option to mark specific points in time for use later
154
+ email: dw_henry@yahoo.com.au
155
+ executables: []
156
+
157
+ extensions: []
158
+
159
+ extra_rdoc_files:
160
+ - LICENSE.txt
161
+ - README.rdoc
162
+ files:
163
+ - .document
164
+ - .rspec
165
+ - .rvmrc
166
+ - Gemfile
167
+ - Gemfile.lock
168
+ - LICENSE.txt
169
+ - README.rdoc
170
+ - Rakefile
171
+ - VERSION
172
+ - features/step_definitions/wherever_steps.rb
173
+ - features/support/env.rb
174
+ - features/wherever.feature
175
+ - lib/wherever.rb
176
+ - lib/wherever/configure.rb
177
+ - lib/wherever/db_store.rb
178
+ - lib/wherever/db_store/dataset.rb
179
+ - lib/wherever/db_store/identifier.rb
180
+ - lib/wherever/db_store/lookup.rb
181
+ - lib/wherever/db_store/marker.rb
182
+ - lib/wherever/db_store/record_matcher.rb
183
+ - lib/wherever/db_store/store.rb
184
+ - lib/wherever/wherever.rb
185
+ - lib/wherever/wherever/accessors.rb
186
+ - lib/wherever/wherever/adder.rb
187
+ - lib/wherever/wherever/getter.rb
188
+ - lib/wherever/wherever/lookup.rb
189
+ - lib/wherever/wherever/mark.rb
190
+ - spec/spec_helper.rb
191
+ - spec/wherever/adder_spec.rb
192
+ - spec/wherever/custom_grouping_spec.rb
193
+ - spec/wherever/getter_spec.rb
194
+ - spec/wherever/key_store_spec.rb
195
+ - spec/wherever/mark_spec.rb
196
+ - spec/wherever/setter_spec.rb
197
+ - spec/wherever/using_lookup_in_grouping_spec.rb
198
+ - wherever.gemspec
199
+ has_rdoc: true
200
+ homepage: http://github.com/dw_henry/wherever
201
+ licenses:
202
+ - MIT
203
+ post_install_message:
204
+ rdoc_options: []
205
+
206
+ require_paths:
207
+ - lib
208
+ required_ruby_version: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ hash: 3
214
+ segments:
215
+ - 0
216
+ version: "0"
217
+ required_rubygems_version: !ruby/object:Gem::Requirement
218
+ none: false
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ hash: 3
223
+ segments:
224
+ - 0
225
+ version: "0"
226
+ requirements: []
227
+
228
+ rubyforge_project:
229
+ rubygems_version: 1.6.2
230
+ signing_key:
231
+ specification_version: 3
232
+ summary: Store and Retrieve positions by location
233
+ test_files: []
234
+