wherever-positions 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
+