rugalytics 0.0.1 → 0.0.2
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.
- data/CHANGELOG +3 -1
- data/lib/rugalytics.rb +1 -1
- data/lib/rugalytics/graph.rb +21 -13
- data/lib/rugalytics/report.rb +5 -5
- data/rugalytics.gemspec +3 -3
- data/spec/lib/rugalytics/graph_spec.rb +24 -20
- data/spec/lib/rugalytics/report_spec.rb +6 -4
- metadata +2 -2
data/CHANGELOG
CHANGED
data/lib/rugalytics.rb
CHANGED
data/lib/rugalytics/graph.rb
CHANGED
@@ -1,31 +1,39 @@
|
|
1
1
|
module Rugalytics
|
2
2
|
class Graph
|
3
3
|
|
4
|
-
attr_reader :name, :points, :from, :to
|
4
|
+
attr_reader :name, :points, :points_by_day, :from, :to
|
5
5
|
|
6
|
-
def initialize name,
|
6
|
+
def initialize name, graph_period, points, report_start, report_end
|
7
7
|
@name = name
|
8
|
-
@
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
@to = Date.parse(dates[1].strip)
|
13
|
-
end
|
14
|
-
@points = points
|
8
|
+
@from = report_start
|
9
|
+
@to = report_end
|
10
|
+
@points_by_day = create_points_by_day points, graph_period, report_start, report_end
|
11
|
+
@points = points_by_day.collect{|by_day| by_day[1]}
|
15
12
|
end
|
16
13
|
|
17
14
|
def sum_of_points
|
18
15
|
points.sum
|
19
16
|
end
|
20
17
|
|
21
|
-
|
22
|
-
|
18
|
+
private
|
19
|
+
|
20
|
+
def create_points_by_day points, graph_period, report_start, report_end
|
21
|
+
with_dates_from_period(graph_period, []) do |date, index, list|
|
22
|
+
list << [date, points[index] ] if date >= report_start && date <= report_end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def with_dates_from_period period, list
|
27
|
+
dates = period.split('-')
|
28
|
+
from = Date.parse(dates[0].strip)
|
29
|
+
to = Date.parse(dates[1].strip)
|
30
|
+
|
23
31
|
index = 0
|
24
32
|
from.upto(to) do |date|
|
25
|
-
|
33
|
+
yield date, index, list
|
26
34
|
index = index.next
|
27
35
|
end
|
28
|
-
|
36
|
+
list
|
29
37
|
end
|
30
38
|
end
|
31
39
|
end
|
data/lib/rugalytics/report.rb
CHANGED
@@ -23,7 +23,7 @@ module Rugalytics
|
|
23
23
|
if is_writer = symbol.to_s[/=$/]
|
24
24
|
morph_method_missing(symbol, *args)
|
25
25
|
|
26
|
-
elsif symbol.to_s.match
|
26
|
+
elsif symbol.to_s.match(/(.*)_(total|by_day)/)
|
27
27
|
graph = "#{$1}_graph".to_sym
|
28
28
|
|
29
29
|
if respond_to?(graph)
|
@@ -43,8 +43,8 @@ module Rugalytics
|
|
43
43
|
@base_url = lines[1]
|
44
44
|
@report_name = lines[2].chomp(',')
|
45
45
|
dates = lines[3].split(',')
|
46
|
-
@start_date = dates[0]
|
47
|
-
@end_date = dates[1]
|
46
|
+
@start_date = Date.parse(dates[0])
|
47
|
+
@end_date = Date.parse(dates[1])
|
48
48
|
end
|
49
49
|
|
50
50
|
def handle_graphs lines
|
@@ -55,7 +55,7 @@ module Rugalytics
|
|
55
55
|
return if index == lines.size
|
56
56
|
end
|
57
57
|
index = index + 2
|
58
|
-
|
58
|
+
graph_period = lines[index]
|
59
59
|
index = index.next
|
60
60
|
name = lines[index]
|
61
61
|
index = index.next
|
@@ -66,7 +66,7 @@ module Rugalytics
|
|
66
66
|
index = index.next
|
67
67
|
end
|
68
68
|
|
69
|
-
graph = Graph.new name,
|
69
|
+
graph = Graph.new name, graph_period, points, start_date, end_date
|
70
70
|
morph("#{name} graph", graph)
|
71
71
|
end
|
72
72
|
end
|
data/rugalytics.gemspec
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
|
2
|
-
# Gem::Specification for Rugalytics-0.0.
|
2
|
+
# Gem::Specification for Rugalytics-0.0.2
|
3
3
|
# Originally generated by Echoe
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = %q{rugalytics}
|
7
|
-
s.version = "0.0.
|
7
|
+
s.version = "0.0.2"
|
8
8
|
|
9
9
|
s.specification_version = 2 if s.respond_to? :specification_version=
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.authors = ["Rob McKinnon"]
|
13
|
-
s.date = %q{2008-06-
|
13
|
+
s.date = %q{2008-06-07}
|
14
14
|
s.description = %q{Rugalytics is a Ruby API for Google Analytics.}
|
15
15
|
s.email = ["rob ~@nospam@~ rubyforge.org"]
|
16
16
|
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README"]
|
@@ -10,34 +10,38 @@ describe Rugalytics::Graph do
|
|
10
10
|
@points = [5360, 3330, 4330]
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
graph = Rugalytics::Graph.new @name, @period, @points
|
15
|
-
|
16
|
-
graph.
|
17
|
-
graph.
|
13
|
+
def graph_correct_for report_start, report_end, expected_points
|
14
|
+
graph = Rugalytics::Graph.new @name, @period, @points, report_start, report_end
|
15
|
+
graph.from.should == report_start
|
16
|
+
graph.to.should == report_end
|
17
|
+
graph.points.should == expected_points
|
18
|
+
graph
|
19
|
+
end
|
18
20
|
|
19
|
-
|
21
|
+
it "should set given points on graph" do
|
22
|
+
graph_correct_for Date.parse('2008-05-01'), Date.parse('2008-05-03'), @points
|
20
23
|
end
|
21
24
|
|
22
|
-
|
25
|
+
it "should set appropriate point on graph when report start and end is the same date" do
|
26
|
+
graph_correct_for Date.parse('2008-05-01'), Date.parse('2008-05-01'), [@points[0]]
|
27
|
+
end
|
23
28
|
|
24
|
-
|
25
|
-
|
26
|
-
graph = Rugalytics::Graph.new '','',[5360, 3330, 4330]
|
27
|
-
graph.sum_of_points.should == 5360 + 3330 + 4330
|
29
|
+
it "should set appropriate points on graph when report start and end is a subset of the graph period" do
|
30
|
+
graph_correct_for Date.parse('2008-05-02'), Date.parse('2008-05-03'), [@points[1],@points[2]]
|
28
31
|
end
|
29
|
-
end
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
to = Date.parse('3 May 2003')
|
37
|
-
graph.stub!(:from).and_return from
|
38
|
-
graph.stub!(:to).and_return to
|
33
|
+
it 'should set points by day' do
|
34
|
+
from = Date.parse('1 May 2008')
|
35
|
+
to = Date.parse('3 May 2008')
|
36
|
+
mid = Date.parse('2 May 2008')
|
37
|
+
graph = graph_correct_for from, to, @points
|
39
38
|
graph.points_by_day.should == [[from,5360],[mid,3330],[to,4330]]
|
40
39
|
end
|
40
|
+
|
41
|
+
it 'should return sum of points' do
|
42
|
+
graph = graph_correct_for Date.parse('2008-05-01'), Date.parse('2008-05-03'), @points
|
43
|
+
graph.sum_of_points.should == 5360 + 3330 + 4330
|
44
|
+
end
|
41
45
|
end
|
42
46
|
|
43
47
|
end
|
@@ -23,11 +23,11 @@ Top Content,
|
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should set start date from fourth line of text" do
|
26
|
-
@report.start_date.should == '26 May 2008'
|
26
|
+
@report.start_date.should == Date.parse('26 May 2008')
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should set end date from fourth line of text" do
|
30
|
-
@report.end_date.should == '31 May 2008'
|
30
|
+
@report.end_date.should == Date.parse('31 May 2008')
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -105,10 +105,12 @@ Visitors Overview,
|
|
105
105
|
before :all do
|
106
106
|
@period = %Q|1 May 2008 - 31 May 2008|
|
107
107
|
@name = %Q|Page Views|
|
108
|
+
@start = %Q|26 May 2008|
|
109
|
+
@end = %Q|31 May 2008|
|
108
110
|
@csv = %Q|# ----------------------------------------
|
109
111
|
theyworkforyou.co.nz
|
110
112
|
Top Content,
|
111
|
-
|
113
|
+
#{@start},#{@end}
|
112
114
|
# ----------------------------------------
|
113
115
|
|
114
116
|
# ----------------------------------------
|
@@ -122,7 +124,7 @@ Top Content,
|
|
122
124
|
|
123
125
|
it 'should create graph with data under "Graph"' do
|
124
126
|
graph = mock('graph')
|
125
|
-
Rugalytics::Graph.should_receive(:new).with(@name, @period, [5360, 433]).and_return graph
|
127
|
+
Rugalytics::Graph.should_receive(:new).with(@name, @period, [5360, 433], Date.parse(@start), Date.parse(@end)).and_return graph
|
126
128
|
|
127
129
|
report = Rugalytics::Report.new(@csv)
|
128
130
|
report.page_views_graph.should == graph
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rugalytics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rob McKinnon
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-06-
|
12
|
+
date: 2008-06-07 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|