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.
@@ -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.