chronicle 0.0.3 → 0.0.4
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/lib/chronicle.rb +3 -0
- data/lib/chronicle/version.rb +1 -1
- data/spec/chronicle_spec.rb +23 -16
- metadata +37 -11
data/lib/chronicle.rb
CHANGED
@@ -75,6 +75,9 @@ module Chronicle
|
|
75
75
|
# Initialize all hash keys chronologically (newest to oldest)
|
76
76
|
eras.reverse.each {|era| self[era] = [] }
|
77
77
|
|
78
|
+
# Remove objects with nil timestamps
|
79
|
+
collection = collection.reject {|obj| obj.send(options[:date_attr]).nil? }
|
80
|
+
|
78
81
|
# Find the oldest era in which each object was created
|
79
82
|
collection.sort_by {|obj| obj.send(options[:date_attr])}.reverse.each do |obj|
|
80
83
|
era = eras.find {|era| obj.send(options[:date_attr]) < Chronic.parse(era) }
|
data/lib/chronicle/version.rb
CHANGED
data/spec/chronicle_spec.rb
CHANGED
@@ -3,15 +3,15 @@ require 'spec_helper'
|
|
3
3
|
describe Chronicle do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
minute = 60
|
7
|
-
hour = minute*60
|
8
|
-
day = hour*24
|
6
|
+
@minute = 60
|
7
|
+
@hour = @minute*60
|
8
|
+
@day = @hour*24
|
9
9
|
@things = [
|
10
|
-
double("thing", :created_at => Time.now - 39
|
11
|
-
double("thing", :created_at => Time.now - 8
|
12
|
-
double("thing", :created_at => Time.now - 9
|
13
|
-
double("thing", :created_at => Time.now - 3
|
14
|
-
double("thing", :created_at => Time.now - 10
|
10
|
+
double("thing", :created_at => Time.now - 39*@day),
|
11
|
+
double("thing", :created_at => Time.now - 8*@day),
|
12
|
+
double("thing", :created_at => Time.now - 9*@day),
|
13
|
+
double("thing", :created_at => Time.now - 3*@day),
|
14
|
+
double("thing", :created_at => Time.now - 10*@minute),
|
15
15
|
double("thing", :created_at => Time.now)
|
16
16
|
]
|
17
17
|
|
@@ -65,15 +65,12 @@ describe Chronicle do
|
|
65
65
|
context "custom date attribute" do
|
66
66
|
|
67
67
|
before(:each) do
|
68
|
-
minute = 60
|
69
|
-
hour = minute*60
|
70
|
-
day = hour*24
|
71
68
|
@things = [
|
72
|
-
double("thing", :updated_at => Time.now - 369
|
73
|
-
double("thing", :updated_at => Time.now - 9
|
74
|
-
double("thing", :updated_at => Time.now - 8
|
75
|
-
double("thing", :updated_at => Time.now - 3
|
76
|
-
double("thing", :updated_at => Time.now - 10
|
69
|
+
double("thing", :updated_at => Time.now - 369*@day, :created_at => nil),
|
70
|
+
double("thing", :updated_at => Time.now - 9*@day, :created_at => nil),
|
71
|
+
double("thing", :updated_at => Time.now - 8*@day, :created_at => nil),
|
72
|
+
double("thing", :updated_at => Time.now - 3*@day, :created_at => nil),
|
73
|
+
double("thing", :updated_at => Time.now - 10*@minute, :created_at => nil),
|
77
74
|
double("thing", :updated_at => Time.now, :created_at => nil)
|
78
75
|
]
|
79
76
|
end
|
@@ -84,6 +81,16 @@ describe Chronicle do
|
|
84
81
|
@chronicle.keys.last.should == '1 year ago'
|
85
82
|
@chronicle.keys.first.should == 'just now'
|
86
83
|
end
|
84
|
+
|
85
|
+
it "gracefully ignores objects with nil timestamps" do
|
86
|
+
@things = [
|
87
|
+
double("thing", :updated_at => Time.now - 369*@day),
|
88
|
+
double("thing", :updated_at => Time.now - 9*@day),
|
89
|
+
double("thing", :updated_at => nil)
|
90
|
+
]
|
91
|
+
@chronicle = Chronicle.new(@things, :date_attr => :updated_at)
|
92
|
+
@chronicle.size.should == 2
|
93
|
+
end
|
87
94
|
|
88
95
|
end
|
89
96
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chronicle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-06-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hoe
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rspec
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: 2.8.0
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.8.0
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: autotest
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: chronic
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,7 +69,12 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :runtime
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
description: Chronicle groups collections of ruby objects into time periods.
|
59
79
|
email:
|
60
80
|
- zeke@sikelianos.com
|
@@ -84,15 +104,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
84
104
|
- - ! '>='
|
85
105
|
- !ruby/object:Gem::Version
|
86
106
|
version: '0'
|
107
|
+
segments:
|
108
|
+
- 0
|
109
|
+
hash: -3365083242738566069
|
87
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
111
|
none: false
|
89
112
|
requirements:
|
90
113
|
- - ! '>='
|
91
114
|
- !ruby/object:Gem::Version
|
92
115
|
version: '0'
|
116
|
+
segments:
|
117
|
+
- 0
|
118
|
+
hash: -3365083242738566069
|
93
119
|
requirements: []
|
94
120
|
rubyforge_project: chronicle
|
95
|
-
rubygems_version: 1.8.
|
121
|
+
rubygems_version: 1.8.24
|
96
122
|
signing_key:
|
97
123
|
specification_version: 3
|
98
124
|
summary: Chronicle groups collections of ruby objects into time periods.
|