amee-analytics 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -2
- data/VERSION +1 -1
- data/amee-analytics.gemspec +10 -9
- data/lib/amee/data_abstraction/terms_list_analytics_support.rb +48 -8
- data/spec/amee/analytics/calculation_collection_spec.rb +18 -2
- data/spec/amee/analytics/terms_list_spec.rb +84 -1
- data/spec/fixtures/config/calculations/calcs.rb +55 -0
- data/spec/spec_helper.rb +14 -63
- metadata +46 -45
data/Gemfile
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
3
|
# Dependencies
|
4
|
-
gem "amee-data-abstraction","~> 1.
|
5
|
-
gem "amee-data-persistence","~> 1.
|
4
|
+
gem "amee-data-abstraction","~> 1.3"
|
5
|
+
gem "amee-data-persistence","~> 1.2"
|
6
6
|
|
7
7
|
# Add dependencies to develop your gem here.
|
8
8
|
# Include everything needed to run rake, tests, features, etc.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0
|
1
|
+
1.1.0
|
data/amee-analytics.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{amee-analytics}
|
8
|
-
s.version = "1.0
|
8
|
+
s.version = "1.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["James Hetherington", "Andrew Berkeley", "James Smith", "George Palmer"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-10-18}
|
13
13
|
s.description = %q{Part of the AMEE AppKit, this gem provides the ability to do mathmatical operations over a set of calculations}
|
14
14
|
s.email = %q{help@amee.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -35,21 +35,22 @@ Gem::Specification.new do |s|
|
|
35
35
|
"spec/amee/analytics/calculation_collection_spec.rb",
|
36
36
|
"spec/amee/analytics/term_spec.rb",
|
37
37
|
"spec/amee/analytics/terms_list_spec.rb",
|
38
|
+
"spec/fixtures/config/calculations/calcs.rb",
|
38
39
|
"spec/spec.opts",
|
39
40
|
"spec/spec_helper.rb"
|
40
41
|
]
|
41
42
|
s.homepage = %q{http://github.com/AMEE/amee-analytics}
|
42
43
|
s.licenses = ["MIT"]
|
43
44
|
s.require_paths = ["lib"]
|
44
|
-
s.rubygems_version = %q{1.
|
45
|
+
s.rubygems_version = %q{1.5.3}
|
45
46
|
s.summary = %q{Analytics module for use with AMEE AppKit}
|
46
47
|
|
47
48
|
if s.respond_to? :specification_version then
|
48
49
|
s.specification_version = 3
|
49
50
|
|
50
51
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
51
|
-
s.add_runtime_dependency(%q<amee-data-abstraction>, ["~> 1.
|
52
|
-
s.add_runtime_dependency(%q<amee-data-persistence>, ["~> 1.
|
52
|
+
s.add_runtime_dependency(%q<amee-data-abstraction>, ["~> 1.3"])
|
53
|
+
s.add_runtime_dependency(%q<amee-data-persistence>, ["~> 1.2"])
|
53
54
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
54
55
|
s.add_development_dependency(%q<rspec>, ["= 1.3.0"])
|
55
56
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
@@ -57,8 +58,8 @@ Gem::Specification.new do |s|
|
|
57
58
|
s.add_development_dependency(%q<flexmock>, ["> 0.8.6"])
|
58
59
|
s.add_development_dependency(%q<activerecord>, ["~> 2.3.5"])
|
59
60
|
else
|
60
|
-
s.add_dependency(%q<amee-data-abstraction>, ["~> 1.
|
61
|
-
s.add_dependency(%q<amee-data-persistence>, ["~> 1.
|
61
|
+
s.add_dependency(%q<amee-data-abstraction>, ["~> 1.3"])
|
62
|
+
s.add_dependency(%q<amee-data-persistence>, ["~> 1.2"])
|
62
63
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
63
64
|
s.add_dependency(%q<rspec>, ["= 1.3.0"])
|
64
65
|
s.add_dependency(%q<rcov>, [">= 0"])
|
@@ -67,8 +68,8 @@ Gem::Specification.new do |s|
|
|
67
68
|
s.add_dependency(%q<activerecord>, ["~> 2.3.5"])
|
68
69
|
end
|
69
70
|
else
|
70
|
-
s.add_dependency(%q<amee-data-abstraction>, ["~> 1.
|
71
|
-
s.add_dependency(%q<amee-data-persistence>, ["~> 1.
|
71
|
+
s.add_dependency(%q<amee-data-abstraction>, ["~> 1.3"])
|
72
|
+
s.add_dependency(%q<amee-data-persistence>, ["~> 1.2"])
|
72
73
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
73
74
|
s.add_dependency(%q<rspec>, ["= 1.3.0"])
|
74
75
|
s.add_dependency(%q<rcov>, [">= 0"])
|
@@ -250,6 +250,28 @@ module AMEE
|
|
250
250
|
Result.new { label label; value value; unit unit; per_unit per_unit }
|
251
251
|
end
|
252
252
|
|
253
|
+
# Move an individual term to a specified location (index) within the list.
|
254
|
+
# The specific term is selected on the basis of one of it's attributes values,
|
255
|
+
# with the attribute to use (e.g. :value, :unit) given by <tt>attr</attr>
|
256
|
+
# and value by <tt>value</tt>. The location within the list to move the term
|
257
|
+
# is given as an index integer value as the final argument.
|
258
|
+
#
|
259
|
+
def move_by(attr,value,index)
|
260
|
+
if attr == :unit || attr == :per_unit
|
261
|
+
value = Unit.for value
|
262
|
+
end
|
263
|
+
term = find {|t| t.send(attr) == value }
|
264
|
+
return if term.nil?
|
265
|
+
delete(term)
|
266
|
+
insert(index, term)
|
267
|
+
end
|
268
|
+
|
269
|
+
# Rotate the list terms by one element - shifts the first-placed term to the
|
270
|
+
# end of the list, advancing all terms forward by one place.
|
271
|
+
def rotate
|
272
|
+
push(self.shift)
|
273
|
+
end
|
274
|
+
|
253
275
|
# Sorts the terms list in place according to the term attribute indiated by
|
254
276
|
# <tt>attr</tt>, returning <tt>self</tt>.
|
255
277
|
#
|
@@ -263,18 +285,36 @@ module AMEE
|
|
263
285
|
|
264
286
|
# Similar to <tt>#sort_by!</tt> but returns a new instance of
|
265
287
|
# <i>TermsList</i> arranged according to the values on the
|
266
|
-
# attribute <tt>attr</tt>.
|
288
|
+
# attribute <tt>attr</tt>.
|
267
289
|
#
|
268
|
-
# my_terms_list.sort_by :value
|
269
290
|
#
|
270
|
-
#
|
291
|
+
# If differences in units exist between terms, sorting occur based on the
|
292
|
+
# absolute quantities implied.
|
293
|
+
#
|
294
|
+
# E.g.
|
295
|
+
#
|
296
|
+
# my_terms_list.sort_by :value
|
297
|
+
#
|
298
|
+
# #=> <AMEE::DataAbstraction::TermsList ... >
|
271
299
|
#
|
272
300
|
def sort_by(attr)
|
273
|
-
# Remove unset terms before sort and append at end
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
301
|
+
# 1. Remove unset terms before sort and append at end
|
302
|
+
#
|
303
|
+
# 2. Establish set terms
|
304
|
+
#
|
305
|
+
# 3. Zip together with corresponding standardized units list creating a
|
306
|
+
# list of Term pairs
|
307
|
+
#
|
308
|
+
# 4. Sort list according to standardized Terms
|
309
|
+
#
|
310
|
+
# 5. Return map of original (now sorted) Terms
|
311
|
+
|
312
|
+
unset_terms, set_terms = self.partition { |term| term.unset? || term.value.nil? }
|
313
|
+
standardized_set_terms = TermsList.new(set_terms).standardize_units
|
314
|
+
ordered_set_terms = set_terms.zip(standardized_set_terms).sort! do |term,other_term|
|
315
|
+
term[1].send(attr) <=> other_term[1].send(attr)
|
316
|
+
end.map {|term_array| term_array[0]}
|
317
|
+
TermsList.new(ordered_set_terms + unset_terms)
|
278
318
|
end
|
279
319
|
|
280
320
|
# Return an instance of <i>TermsList</i> containing only terms labelled
|
@@ -5,7 +5,6 @@ include AMEE::DataAbstraction
|
|
5
5
|
describe CalculationCollection do
|
6
6
|
|
7
7
|
before(:each) do
|
8
|
-
initialize_calculation_set
|
9
8
|
@calcs = []
|
10
9
|
@calcs << add_elec_calc(500,240)
|
11
10
|
@calcs << add_elec_calc(1000,480)
|
@@ -48,7 +47,7 @@ describe CalculationCollection do
|
|
48
47
|
terms.all? {|term| term.is_a? AMEE::DataAbstraction::Output }.should be_true
|
49
48
|
end
|
50
49
|
|
51
|
-
it "should sum term values with
|
50
|
+
it "should sum term values with homogeneous calcs" do
|
52
51
|
@coll.co2.sum.to_s.should eql "1320.0 t"
|
53
52
|
@coll.co2.mean.to_s.should eql "440.0 t"
|
54
53
|
@coll.usage.sum.to_s.should eql "2734.0 kWh"
|
@@ -122,6 +121,23 @@ describe CalculationCollection do
|
|
122
121
|
coll.last['co2'].value.should eql 600
|
123
122
|
end
|
124
123
|
|
124
|
+
it "should sort calcs considering differences in units" do
|
125
|
+
@coll.first['usage'].value.should eql 500
|
126
|
+
@coll.first['usage'].unit.label.should eql 'kWh'
|
127
|
+
@coll[1]['usage'].value.should eql 1000
|
128
|
+
@coll[1]['usage'].unit.label.should eql 'kWh'
|
129
|
+
@coll.last['usage'].unit 'J'
|
130
|
+
@coll.last['usage'].value.should eql 1234
|
131
|
+
@coll.last['usage'].unit.label.should eql 'J'
|
132
|
+
@coll.sort_by_usage!
|
133
|
+
@coll.first['usage'].value.should eql 1234
|
134
|
+
@coll.first['usage'].unit.label.should eql 'J'
|
135
|
+
@coll[1]['usage'].value.should eql 500
|
136
|
+
@coll[1]['usage'].unit.label.should eql 'kWh'
|
137
|
+
@coll.last['usage'].value.should eql 1000
|
138
|
+
@coll.last['usage'].unit.label.should eql 'kWh'
|
139
|
+
end
|
140
|
+
|
125
141
|
it "should standardize units in place" do
|
126
142
|
@coll.first['usage'].unit 'J'
|
127
143
|
@coll.first['usage'].value.should eql 500
|
@@ -5,7 +5,6 @@ include AMEE::DataAbstraction
|
|
5
5
|
describe TermsList do
|
6
6
|
|
7
7
|
before(:each) do
|
8
|
-
initialize_calculation_set
|
9
8
|
calcs = []
|
10
9
|
calcs << add_elec_calc(500,240)
|
11
10
|
calcs << add_elec_calc(1000,480)
|
@@ -335,6 +334,90 @@ describe TermsList do
|
|
335
334
|
@list.last.value.should eql nil
|
336
335
|
end
|
337
336
|
|
337
|
+
it "should return a sorted terms list considering differences in units" do
|
338
|
+
@list=@list.co2
|
339
|
+
@list.first.unit 't'
|
340
|
+
@list[1].unit 'lb'
|
341
|
+
@list.last.unit 'kg'
|
342
|
+
@list.first.to_s.should eql "240.0 t"
|
343
|
+
@list[1].to_s.should eql "480.0 lb"
|
344
|
+
@list.last.to_s.should eql "600.0 kg"
|
345
|
+
@list.reverse!
|
346
|
+
@list.first.to_s.should_not eql "240.0 t"
|
347
|
+
@list.last.to_s.should_not eql "600.0 kg"
|
348
|
+
list = @list.sort_by_value
|
349
|
+
list.first.to_s.should eql "480.0 lb"
|
350
|
+
list[1].to_s.should eql "600.0 kg"
|
351
|
+
list.last.to_s.should eql "240.0 t"
|
352
|
+
end
|
353
|
+
|
354
|
+
it "should sort on non-numeric values" do
|
355
|
+
@list=@list.country
|
356
|
+
@list.first.value 'Zambia'
|
357
|
+
@list[1].value 'Bulgaria'
|
358
|
+
@list.last.value 'Mauritania'
|
359
|
+
@list.first.to_s.should eql 'Zambia'
|
360
|
+
@list[1].to_s.should eql 'Bulgaria'
|
361
|
+
@list.last.to_s.should eql 'Mauritania'
|
362
|
+
@list.reverse!
|
363
|
+
@list.first.to_s.should_not eql 'Zambia'
|
364
|
+
@list.last.to_s.should_not eql 'Mauritania'
|
365
|
+
list = @list.sort_by_value
|
366
|
+
list.first.to_s.should eql 'Bulgaria'
|
367
|
+
list[1].to_s.should eql 'Mauritania'
|
368
|
+
list.last.to_s.should eql'Zambia'
|
369
|
+
end
|
370
|
+
|
371
|
+
it "should move a term on the basis of value" do
|
372
|
+
@list=@list.co2
|
373
|
+
@list.first.to_s.should eql "240.0 t"
|
374
|
+
@list[1].to_s.should eql "480.0 t"
|
375
|
+
@list.last.to_s.should eql "600.0 t"
|
376
|
+
@list.move_by(:value, 600.0,0)
|
377
|
+
@list.first.to_s.should eql "600.0 t"
|
378
|
+
@list[1].to_s.should eql "240.0 t"
|
379
|
+
@list.last.to_s.should eql "480.0 t"
|
380
|
+
end
|
381
|
+
|
382
|
+
it "should move a term on the basis of unit object" do
|
383
|
+
@list=@list.co2
|
384
|
+
@list.first.unit 't'
|
385
|
+
@list[1].unit 'lb'
|
386
|
+
@list.last.unit 'kg'
|
387
|
+
@list.first.to_s.should eql "240.0 t"
|
388
|
+
@list[1].to_s.should eql "480.0 lb"
|
389
|
+
@list.last.to_s.should eql "600.0 kg"
|
390
|
+
@list.move_by(:unit, Unit.kg,1)
|
391
|
+
@list.first.to_s.should eql "240.0 t"
|
392
|
+
@list[1].to_s.should eql "600.0 kg"
|
393
|
+
@list.last.to_s.should eql "480.0 lb"
|
394
|
+
end
|
395
|
+
|
396
|
+
it "should move a term on the basis of unit label" do
|
397
|
+
@list=@list.co2
|
398
|
+
@list.first.unit 't'
|
399
|
+
@list[1].unit 'lb'
|
400
|
+
@list.last.unit 'kg'
|
401
|
+
@list.first.to_s.should eql "240.0 t"
|
402
|
+
@list[1].to_s.should eql "480.0 lb"
|
403
|
+
@list.last.to_s.should eql "600.0 kg"
|
404
|
+
@list.move_by(:unit, :t,-1)
|
405
|
+
@list.first.to_s.should eql "480.0 lb"
|
406
|
+
@list[1].to_s.should eql "600.0 kg"
|
407
|
+
@list.last.to_s.should eql "240.0 t"
|
408
|
+
end
|
409
|
+
|
410
|
+
it "should rotate terms" do
|
411
|
+
@list=@list.co2
|
412
|
+
@list.first.to_s.should eql "240.0 t"
|
413
|
+
@list[1].to_s.should eql "480.0 t"
|
414
|
+
@list.last.to_s.should eql "600.0 t"
|
415
|
+
@list.rotate
|
416
|
+
@list.first.to_s.should eql "480.0 t"
|
417
|
+
@list[1].to_s.should eql "600.0 t"
|
418
|
+
@list.last.to_s.should eql "240.0 t"
|
419
|
+
end
|
420
|
+
|
338
421
|
it "should return a new TermList for numeric only terms" do
|
339
422
|
@list=@list.co2.numeric_terms.should be_a TermsList
|
340
423
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
calculation{
|
2
|
+
name 'Electricity'
|
3
|
+
label :electricity
|
4
|
+
path '/business/energy/electricity/grid'
|
5
|
+
drill {
|
6
|
+
label :country
|
7
|
+
path 'country'
|
8
|
+
value 'Argentina'
|
9
|
+
}
|
10
|
+
profile {
|
11
|
+
label :usage
|
12
|
+
name 'Electricity Used'
|
13
|
+
path 'energyPerTime'
|
14
|
+
default_unit :kWh
|
15
|
+
}
|
16
|
+
output {
|
17
|
+
label :co2
|
18
|
+
name 'Carbon Dioxide'
|
19
|
+
path 'default'
|
20
|
+
default_unit :t
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
calculation{
|
25
|
+
name 'Transport'
|
26
|
+
label :transport
|
27
|
+
path '/transport/defra/vehicle'
|
28
|
+
drill {
|
29
|
+
label :type
|
30
|
+
path 'type'
|
31
|
+
name 'Type'
|
32
|
+
}
|
33
|
+
drill {
|
34
|
+
label :size
|
35
|
+
path 'size'
|
36
|
+
name 'Size'
|
37
|
+
}
|
38
|
+
drill {
|
39
|
+
label :fuel
|
40
|
+
path 'fuel'
|
41
|
+
name 'Fuel'
|
42
|
+
}
|
43
|
+
profile {
|
44
|
+
label :distance
|
45
|
+
name 'distance'
|
46
|
+
path 'distance'
|
47
|
+
default_unit :km
|
48
|
+
}
|
49
|
+
output {
|
50
|
+
label :co2
|
51
|
+
name 'Carbon Dioxide'
|
52
|
+
path 'default'
|
53
|
+
default_unit :t
|
54
|
+
}
|
55
|
+
}
|
data/spec/spec_helper.rb
CHANGED
@@ -3,7 +3,7 @@ require 'spec'
|
|
3
3
|
|
4
4
|
require 'amee-analytics'
|
5
5
|
require 'amee-data-persistence'
|
6
|
-
require 'amee/data_abstraction/
|
6
|
+
require 'amee/data_abstraction/ongoing_calculation_persistence_support.rb'
|
7
7
|
require 'amee/data_abstraction/calculation_collection_analytics_support'
|
8
8
|
require 'amee/data_abstraction/terms_list_analytics_support'
|
9
9
|
require 'amee/data_abstraction/term_analytics_support'
|
@@ -15,80 +15,31 @@ AMEE::DataAbstraction::CalculationCollection.class_eval { include AMEE::DataAbst
|
|
15
15
|
AMEE::DataAbstraction::TermsList.class_eval { include AMEE::DataAbstraction::TermsListAnalyticsSupport }
|
16
16
|
AMEE::DataAbstraction::Term.class_eval { include AMEE::DataAbstraction::TermAnalyticsSupport }
|
17
17
|
|
18
|
-
|
18
|
+
class Rails
|
19
|
+
def self.root
|
20
|
+
File.dirname(__FILE__) + '/fixtures'
|
21
|
+
end
|
22
|
+
def self.logger
|
23
|
+
nil
|
24
|
+
end
|
25
|
+
end
|
19
26
|
|
20
27
|
Spec::Runner.configure do |config|
|
21
28
|
config.mock_with :flexmock
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
eval "Calculations = AMEE::DataAbstraction::CalculationSet.new {
|
26
|
-
calculation{
|
27
|
-
name 'Electricity'
|
28
|
-
label :electricity
|
29
|
-
path '/business/energy/electricity/grid'
|
30
|
-
drill {
|
31
|
-
label :country
|
32
|
-
path 'country'
|
33
|
-
fixed 'Argentina'
|
34
|
-
}
|
35
|
-
profile {
|
36
|
-
label :usage
|
37
|
-
name 'Electricity Used'
|
38
|
-
path 'energyPerTime'
|
39
|
-
default_unit :kWh
|
40
|
-
}
|
41
|
-
output {
|
42
|
-
label :co2
|
43
|
-
name 'Carbon Dioxide'
|
44
|
-
path :default
|
45
|
-
default_unit :t
|
46
|
-
}
|
47
|
-
}
|
48
|
-
calculation{
|
49
|
-
name 'Transport'
|
50
|
-
label :transport
|
51
|
-
path '/transport/defra/vehicle'
|
52
|
-
drill {
|
53
|
-
label :type
|
54
|
-
path 'type'
|
55
|
-
name 'Type'
|
56
|
-
}
|
57
|
-
drill {
|
58
|
-
label :size
|
59
|
-
path 'size'
|
60
|
-
name 'Size'
|
61
|
-
}
|
62
|
-
drill {
|
63
|
-
label :fuel
|
64
|
-
path 'fuel'
|
65
|
-
name 'Fuel'
|
66
|
-
}
|
67
|
-
profile {
|
68
|
-
label :distance
|
69
|
-
name 'distance'
|
70
|
-
path 'distance'
|
71
|
-
default_unit :km
|
72
|
-
}
|
73
|
-
output {
|
74
|
-
label :co2
|
75
|
-
name 'Carbon Dioxide'
|
76
|
-
path :default
|
77
|
-
default_unit :t
|
78
|
-
}
|
79
|
-
}
|
80
|
-
}"
|
29
|
+
config.before(:all) do
|
30
|
+
CalculationSet.find("calcs")
|
31
|
+
end
|
81
32
|
end
|
82
33
|
|
83
34
|
def add_elec_calc(act,res)
|
84
|
-
calc =
|
35
|
+
calc = CalculationSet.find("calcs")[:electricity].begin_calculation
|
85
36
|
calc['usage'].value act
|
86
37
|
calc['co2'].value res
|
87
38
|
return calc
|
88
39
|
end
|
89
40
|
|
90
41
|
def add_transport_calc(act,res)
|
91
|
-
calc =
|
42
|
+
calc = CalculationSet.find("calcs")[:transport].begin_calculation
|
92
43
|
calc['distance'].value act
|
93
44
|
calc['co2'].value res
|
94
45
|
return calc
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amee-analytics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
- 0
|
9
8
|
- 1
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 1.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- James Hetherington
|
@@ -18,43 +18,42 @@ autorequire:
|
|
18
18
|
bindir: bin
|
19
19
|
cert_chain: []
|
20
20
|
|
21
|
-
date: 2011-
|
21
|
+
date: 2011-10-18 00:00:00 +01:00
|
22
22
|
default_executable:
|
23
23
|
dependencies:
|
24
24
|
- !ruby/object:Gem::Dependency
|
25
|
-
|
26
|
-
|
27
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
name: amee-data-abstraction
|
26
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
28
27
|
none: false
|
29
28
|
requirements:
|
30
29
|
- - ~>
|
31
30
|
- !ruby/object:Gem::Version
|
32
|
-
hash:
|
31
|
+
hash: 9
|
33
32
|
segments:
|
34
33
|
- 1
|
35
|
-
-
|
36
|
-
version: "1.
|
37
|
-
name: amee-data-abstraction
|
38
|
-
version_requirements: *id001
|
39
|
-
- !ruby/object:Gem::Dependency
|
34
|
+
- 3
|
35
|
+
version: "1.3"
|
40
36
|
prerelease: false
|
41
37
|
type: :runtime
|
42
|
-
requirement:
|
38
|
+
requirement: *id001
|
39
|
+
- !ruby/object:Gem::Dependency
|
40
|
+
name: amee-data-persistence
|
41
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
43
42
|
none: false
|
44
43
|
requirements:
|
45
44
|
- - ~>
|
46
45
|
- !ruby/object:Gem::Version
|
47
|
-
hash:
|
46
|
+
hash: 11
|
48
47
|
segments:
|
49
48
|
- 1
|
50
|
-
-
|
51
|
-
version: "1.
|
52
|
-
name: amee-data-persistence
|
53
|
-
version_requirements: *id002
|
54
|
-
- !ruby/object:Gem::Dependency
|
49
|
+
- 2
|
50
|
+
version: "1.2"
|
55
51
|
prerelease: false
|
56
|
-
type: :
|
57
|
-
requirement:
|
52
|
+
type: :runtime
|
53
|
+
requirement: *id002
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: jeweler
|
56
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
58
57
|
none: false
|
59
58
|
requirements:
|
60
59
|
- - ~>
|
@@ -65,12 +64,12 @@ dependencies:
|
|
65
64
|
- 6
|
66
65
|
- 4
|
67
66
|
version: 1.6.4
|
68
|
-
name: jeweler
|
69
|
-
version_requirements: *id003
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
67
|
prerelease: false
|
72
68
|
type: :development
|
73
|
-
requirement:
|
69
|
+
requirement: *id003
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rspec
|
72
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
74
73
|
none: false
|
75
74
|
requirements:
|
76
75
|
- - "="
|
@@ -81,12 +80,12 @@ dependencies:
|
|
81
80
|
- 3
|
82
81
|
- 0
|
83
82
|
version: 1.3.0
|
84
|
-
name: rspec
|
85
|
-
version_requirements: *id004
|
86
|
-
- !ruby/object:Gem::Dependency
|
87
83
|
prerelease: false
|
88
84
|
type: :development
|
89
|
-
requirement:
|
85
|
+
requirement: *id004
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
name: rcov
|
88
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
90
89
|
none: false
|
91
90
|
requirements:
|
92
91
|
- - ">="
|
@@ -95,12 +94,12 @@ dependencies:
|
|
95
94
|
segments:
|
96
95
|
- 0
|
97
96
|
version: "0"
|
98
|
-
name: rcov
|
99
|
-
version_requirements: *id005
|
100
|
-
- !ruby/object:Gem::Dependency
|
101
97
|
prerelease: false
|
102
98
|
type: :development
|
103
|
-
requirement:
|
99
|
+
requirement: *id005
|
100
|
+
- !ruby/object:Gem::Dependency
|
101
|
+
name: rspec_spinner
|
102
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
104
103
|
none: false
|
105
104
|
requirements:
|
106
105
|
- - "="
|
@@ -111,12 +110,12 @@ dependencies:
|
|
111
110
|
- 1
|
112
111
|
- 3
|
113
112
|
version: 1.1.3
|
114
|
-
name: rspec_spinner
|
115
|
-
version_requirements: *id006
|
116
|
-
- !ruby/object:Gem::Dependency
|
117
113
|
prerelease: false
|
118
114
|
type: :development
|
119
|
-
requirement:
|
115
|
+
requirement: *id006
|
116
|
+
- !ruby/object:Gem::Dependency
|
117
|
+
name: flexmock
|
118
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
120
119
|
none: false
|
121
120
|
requirements:
|
122
121
|
- - ">"
|
@@ -127,12 +126,12 @@ dependencies:
|
|
127
126
|
- 8
|
128
127
|
- 6
|
129
128
|
version: 0.8.6
|
130
|
-
name: flexmock
|
131
|
-
version_requirements: *id007
|
132
|
-
- !ruby/object:Gem::Dependency
|
133
129
|
prerelease: false
|
134
130
|
type: :development
|
135
|
-
requirement:
|
131
|
+
requirement: *id007
|
132
|
+
- !ruby/object:Gem::Dependency
|
133
|
+
name: activerecord
|
134
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
136
135
|
none: false
|
137
136
|
requirements:
|
138
137
|
- - ~>
|
@@ -143,8 +142,9 @@ dependencies:
|
|
143
142
|
- 3
|
144
143
|
- 5
|
145
144
|
version: 2.3.5
|
146
|
-
|
147
|
-
|
145
|
+
prerelease: false
|
146
|
+
type: :development
|
147
|
+
requirement: *id008
|
148
148
|
description: Part of the AMEE AppKit, this gem provides the ability to do mathmatical operations over a set of calculations
|
149
149
|
email: help@amee.com
|
150
150
|
executables: []
|
@@ -173,6 +173,7 @@ files:
|
|
173
173
|
- spec/amee/analytics/calculation_collection_spec.rb
|
174
174
|
- spec/amee/analytics/term_spec.rb
|
175
175
|
- spec/amee/analytics/terms_list_spec.rb
|
176
|
+
- spec/fixtures/config/calculations/calcs.rb
|
176
177
|
- spec/spec.opts
|
177
178
|
- spec/spec_helper.rb
|
178
179
|
has_rdoc: true
|
@@ -205,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
205
206
|
requirements: []
|
206
207
|
|
207
208
|
rubyforge_project:
|
208
|
-
rubygems_version: 1.
|
209
|
+
rubygems_version: 1.5.3
|
209
210
|
signing_key:
|
210
211
|
specification_version: 3
|
211
212
|
summary: Analytics module for use with AMEE AppKit
|