chronicle 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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) }
@@ -1,3 +1,3 @@
1
1
  module Chronicle
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -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*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),
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*day, :created_at => nil),
73
- double("thing", :updated_at => Time.now - 9*day, :created_at => nil),
74
- double("thing", :updated_at => Time.now - 8*day, :created_at => nil),
75
- double("thing", :updated_at => Time.now - 3*day, :created_at => nil),
76
- double("thing", :updated_at => Time.now - 10*minute, :created_at => nil),
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.3
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-02-29 00:00:00.000000000 Z
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: &70345089392060 !ruby/object:Gem::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: *70345089392060
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: &70345089391560 !ruby/object:Gem::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: *70345089391560
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: &70345089391140 !ruby/object:Gem::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: *70345089391140
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: &70345089390680 !ruby/object:Gem::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: *70345089390680
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.10
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.