kronos 0.1.10 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/kronos.rb CHANGED
@@ -3,6 +3,9 @@ require 'parsedate'
3
3
 
4
4
  class Kronos
5
5
 
6
+ class Exception < RuntimeError; end
7
+ class Invalid < Exception; end
8
+
6
9
  attr_accessor :year, :month, :day
7
10
 
8
11
  IGNORE_PATTERN = Regexp.compile("^prior")
@@ -33,7 +36,7 @@ class Kronos
33
36
 
34
37
  def to_s
35
38
  s = ""
36
- raise "Invalid" unless valid?
39
+ raise Invalid, errors unless valid?
37
40
  s << "%04i" % year if year
38
41
  s << "-%02i" % month if month
39
42
  s << "-%02i" % day if day
@@ -97,11 +100,11 @@ class Kronos
97
100
  elsif self.day == other.day
98
101
  false
99
102
  else
100
- raise "Unexpected"
103
+ raise Exception, "unexpected error"
101
104
  end
102
105
  end
103
106
  else
104
- raise "Unexpected"
107
+ raise Exception, "unexpected error"
105
108
  end
106
109
  end
107
110
 
@@ -143,15 +146,16 @@ class Kronos
143
146
  elsif self.day == other.day
144
147
  false
145
148
  else
146
- raise "Unexpected"
149
+ raise Exception, "unexpected error"
147
150
  end
148
151
  end
149
152
  else
150
- raise "Unexpected"
153
+ raise Exception, "unexpected error"
151
154
  end
152
155
  end
153
156
 
154
157
  def to_hash
158
+ raise Invalid, errors unless valid?
155
159
  h = {}
156
160
  h['year'] = year if year
157
161
  h['month'] = month if month
@@ -164,7 +168,7 @@ class Kronos
164
168
  o.year = h['year'] if h['year']
165
169
  o.month = h['month'] if h['month']
166
170
  o.day = h['day'] if h['day']
167
- o if o.valid?
171
+ o
168
172
  end
169
173
 
170
174
  def self.parse(string)
data/lib/version.rb CHANGED
@@ -2,8 +2,8 @@ class Kronos
2
2
 
3
3
  module Version
4
4
  MAJOR = 0
5
- MINOR = 1
6
- PATCH = 10
5
+ MINOR = 2
6
+ PATCH = 0
7
7
  BUILD = nil
8
8
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
9
9
  end
@@ -38,7 +38,10 @@ describe "Kronos from_hash" do
38
38
  'month' => nil,
39
39
  'day' => 9,
40
40
  })
41
- k.should == nil
41
+ k.should be_instance_of(Kronos)
42
+ k.year.should == 2002
43
+ k.month.should == nil
44
+ k.day.should == 9
42
45
  end
43
46
 
44
47
  end
data/spec/parse_spec.rb CHANGED
@@ -7,11 +7,6 @@ describe "Kronos" do
7
7
  c.year.should == 2001
8
8
  c.month.should == 3
9
9
  c.day.should == 15
10
- c.to_hash.should == {
11
- 'year' => 2001,
12
- 'month' => 3,
13
- 'day' => 15,
14
- }
15
10
  end
16
11
 
17
12
  it "January 1976" do
@@ -19,10 +14,6 @@ describe "Kronos" do
19
14
  c.year.should == 1976
20
15
  c.month.should == 1
21
16
  c.day.should == nil
22
- c.to_hash.should == {
23
- 'year' => 1976,
24
- 'month' => 1,
25
- }
26
17
  end
27
18
 
28
19
  it "1991" do
@@ -30,9 +21,6 @@ describe "Kronos" do
30
21
  c.year.should == 1991
31
22
  c.month.should == nil
32
23
  c.day.should == nil
33
- c.to_hash.should == {
34
- 'year' => 1991,
35
- }
36
24
  end
37
25
 
38
26
  it "91" do
@@ -40,9 +28,6 @@ describe "Kronos" do
40
28
  c.year.should == 1991
41
29
  c.month.should == nil
42
30
  c.day.should == nil
43
- c.to_hash.should == {
44
- 'year' => 1991,
45
- }
46
31
  end
47
32
 
48
33
  it "'91" do
@@ -50,9 +35,6 @@ describe "Kronos" do
50
35
  c.year.should == 1991
51
36
  c.month.should == nil
52
37
  c.day.should == nil
53
- c.to_hash.should == {
54
- 'year' => 1991,
55
- }
56
38
  end
57
39
 
58
40
  it "2019" do
@@ -60,9 +42,6 @@ describe "Kronos" do
60
42
  c.year.should == 2019
61
43
  c.month.should == nil
62
44
  c.day.should == nil
63
- c.to_hash.should == {
64
- 'year' => 2019,
65
- }
66
45
  end
67
46
 
68
47
  it "19" do
@@ -70,9 +49,6 @@ describe "Kronos" do
70
49
  c.year.should == 2019
71
50
  c.month.should == nil
72
51
  c.day.should == nil
73
- c.to_hash.should == {
74
- 'year' => 2019,
75
- }
76
52
  end
77
53
 
78
54
  it "'19" do
@@ -80,9 +56,6 @@ describe "Kronos" do
80
56
  c.year.should == 2019
81
57
  c.month.should == nil
82
58
  c.day.should == nil
83
- c.to_hash.should == {
84
- 'year' => 2019,
85
- }
86
59
  end
87
60
 
88
61
  it "1/17/2007" do
@@ -90,11 +63,6 @@ describe "Kronos" do
90
63
  c.year.should == 2007
91
64
  c.month.should == 1
92
65
  c.day.should == 17
93
- c.to_hash.should == {
94
- 'year' => 2007,
95
- 'month' => 1,
96
- 'day' => 17,
97
- }
98
66
  end
99
67
 
100
68
  it "Aug-96" do
@@ -102,10 +70,6 @@ describe "Kronos" do
102
70
  c.year.should == 1996
103
71
  c.month.should == 8
104
72
  c.day.should == nil
105
- c.to_hash.should == {
106
- 'year' => 1996,
107
- 'month' => 8,
108
- }
109
73
  end
110
74
 
111
75
  it "15-Mar-96" do
@@ -113,11 +77,6 @@ describe "Kronos" do
113
77
  c.year.should == 1996
114
78
  c.month.should == 3
115
79
  c.day.should == 15
116
- c.to_hash.should == {
117
- 'year' => 1996,
118
- 'month' => 3,
119
- 'day' => 15,
120
- }
121
80
  end
122
81
 
123
82
  it "nil" do
@@ -125,7 +84,6 @@ describe "Kronos" do
125
84
  c.year.should == nil
126
85
  c.month.should == nil
127
86
  c.day.should == nil
128
- c.to_hash.should == {}
129
87
  end
130
88
 
131
89
  it "empty string" do
@@ -133,7 +91,6 @@ describe "Kronos" do
133
91
  c.year.should == nil
134
92
  c.month.should == nil
135
93
  c.day.should == nil
136
- c.to_hash.should == {}
137
94
  end
138
95
 
139
96
  it "unknown" do
@@ -141,7 +98,6 @@ describe "Kronos" do
141
98
  c.year.should == nil
142
99
  c.month.should == nil
143
100
  c.day.should == nil
144
- c.to_hash.should == {}
145
101
  end
146
102
 
147
103
  it "prior to 1998" do
@@ -149,7 +105,6 @@ describe "Kronos" do
149
105
  c.year.should == nil
150
106
  c.month.should == nil
151
107
  c.day.should == nil
152
- c.to_hash.should == {}
153
108
  end
154
109
 
155
110
  end
@@ -0,0 +1,46 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "to_hash" do
4
+
5
+ def new_kronos(year=nil, month=nil, day=nil)
6
+ k = Kronos.new
7
+ k.year = year if year
8
+ k.month = month if month
9
+ k.day = day if day
10
+ k
11
+ end
12
+
13
+ it "2007-1-17" do
14
+ new_kronos(2007, 1, 17).to_hash.should == {
15
+ 'year' => 2007,
16
+ 'month' => 1,
17
+ 'day' => 17,
18
+ }
19
+ end
20
+
21
+ it "1996-8" do
22
+ new_kronos(1996, 8).to_hash.should == {
23
+ 'year' => 1996,
24
+ 'month' => 8,
25
+ }
26
+ end
27
+
28
+ it "1980" do
29
+ new_kronos(1980).to_hash.should == {
30
+ 'year' => 1980,
31
+ }
32
+ end
33
+
34
+ it "nil, nil, nil" do
35
+ lambda do
36
+ new_kronos(nil, nil, nil).to_hash.should raise(Kronos::Invalid)
37
+ end
38
+ end
39
+
40
+ it "nil, 7" do
41
+ lambda do
42
+ new_kronos(nil, 7).to_hash.should raise(Kronos::Invalid)
43
+ end
44
+ end
45
+
46
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kronos
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 10
10
- version: 0.1.10
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - David James
@@ -104,6 +104,7 @@ files:
104
104
  - spec/parse_spec.rb
105
105
  - spec/spec.opts
106
106
  - spec/spec_helper.rb
107
+ - spec/to_hash_spec.rb
107
108
  - spec/to_s_spec.rb
108
109
  - spec/valid_spec.rb
109
110
  has_rdoc: true
@@ -146,5 +147,6 @@ test_files:
146
147
  - spec/from_hash_spec.rb
147
148
  - spec/parse_spec.rb
148
149
  - spec/spec_helper.rb
150
+ - spec/to_hash_spec.rb
149
151
  - spec/to_s_spec.rb
150
152
  - spec/valid_spec.rb