partial-date 1.1.5 → 1.1.6
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.textile +5 -0
- data/lib/partial-date/date.rb +9 -10
- data/lib/partial-date/version.rb +1 -1
- data/spec/date_spec.rb +11 -1
- metadata +1 -1
data/ChangeLog.textile
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
h3. 1.1.6 / 2012-05-30
|
2
|
+
|
3
|
+
* Bugfix: Checked that sign is switched off when a postive year is set after a negative year.
|
4
|
+
* Bugfix: Fixed to_s again (before formatters are implemented).
|
5
|
+
|
1
6
|
h3. 1.1.5 / 2012-05-30
|
2
7
|
|
3
8
|
* Allow negative years and year range from -1048576 to 1048576 (20 bits).
|
data/lib/partial-date/date.rb
CHANGED
@@ -133,13 +133,12 @@ module PartialDate
|
|
133
133
|
#
|
134
134
|
# Returns nothing
|
135
135
|
def year=(value)
|
136
|
-
|
137
136
|
if value.nil?
|
138
137
|
raise YearError, "Year cannot be nil"
|
139
138
|
end
|
140
139
|
|
141
140
|
if value.is_a?(String)
|
142
|
-
if value =~ /\A
|
141
|
+
if value =~ /\A\-?\d{1,7}\z/
|
143
142
|
value = value.to_i
|
144
143
|
else
|
145
144
|
raise YearError, "Year must be a valid string or integer from -1048576 to 1048576"
|
@@ -149,7 +148,7 @@ module PartialDate
|
|
149
148
|
if value.is_a?(Integer) && (value >= -1048576 && value <= 1048576)
|
150
149
|
@bits = self.class.set_year(@bits, value)
|
151
150
|
else
|
152
|
-
raise YearError, "Year must be an integer
|
151
|
+
raise YearError, "Year must be an integer from -1048576 to 1048576"
|
153
152
|
end
|
154
153
|
end
|
155
154
|
|
@@ -160,7 +159,6 @@ module PartialDate
|
|
160
159
|
|
161
160
|
# Public: Set the month of a partial date.
|
162
161
|
def month=(value)
|
163
|
-
|
164
162
|
value = 0 if value.nil?
|
165
163
|
|
166
164
|
if value.is_a?(String)
|
@@ -188,7 +186,6 @@ module PartialDate
|
|
188
186
|
# Public: Set the day portion of a partial date. Day is optional so zero,
|
189
187
|
# nil and empty strings are allowed.
|
190
188
|
def day=(value)
|
191
|
-
|
192
189
|
raise DayError, "A month must be set before a day" if month == 0
|
193
190
|
|
194
191
|
value = 0 if value.nil?
|
@@ -228,14 +225,15 @@ module PartialDate
|
|
228
225
|
#
|
229
226
|
# Returns string representation of date.
|
230
227
|
def to_s
|
231
|
-
|
232
|
-
|
233
|
-
result =
|
228
|
+
result = ""
|
229
|
+
if value != 0
|
230
|
+
result = year.to_s.rjust(4, '0') if year != 0
|
231
|
+
result = result + "-" if result.length > 3
|
232
|
+
result = result + month.to_s.rjust(2, '0') if month > 0
|
234
233
|
result = result + "-" + day.to_s.rjust(2, '0') if day > 0
|
235
234
|
return result
|
236
|
-
else
|
237
|
-
return ""
|
238
235
|
end
|
236
|
+
result
|
239
237
|
end
|
240
238
|
|
241
239
|
# Public: Spaceship operator for date comparisons. Comparisons are
|
@@ -283,6 +281,7 @@ module PartialDate
|
|
283
281
|
|
284
282
|
def self.set_year(register, value)
|
285
283
|
register = set_sign(register, 1) if value < 0
|
284
|
+
register = set_sign(register, 0) if value >= 0
|
286
285
|
register = (register & ZERO_YEAR_MASK) | (value.abs << YEAR_SHIFT)
|
287
286
|
end
|
288
287
|
|
data/lib/partial-date/version.rb
CHANGED
data/spec/date_spec.rb
CHANGED
@@ -92,7 +92,7 @@ describe PartialDate::Date do
|
|
92
92
|
end
|
93
93
|
|
94
94
|
it "should raise an error if year is set to a value greater than 1048576" do
|
95
|
-
expect {date.year = 1048577 }.to raise_error(PartialDate::YearError, "Year must be an integer
|
95
|
+
expect {date.year = 1048577 }.to raise_error(PartialDate::YearError, "Year must be an integer from -1048576 to 1048576")
|
96
96
|
end
|
97
97
|
|
98
98
|
it "should return a postive year when a positive year is set" do
|
@@ -104,6 +104,16 @@ describe PartialDate::Date do
|
|
104
104
|
date.year = -9999
|
105
105
|
date.year.should == -9999
|
106
106
|
end
|
107
|
+
|
108
|
+
it "should allow a valid string value" do
|
109
|
+
date.year = "2010"
|
110
|
+
date.year.should == 2010
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should allow a negative value in a string" do
|
114
|
+
date.year = "-2010"
|
115
|
+
date.year.should == -2010
|
116
|
+
end
|
107
117
|
end
|
108
118
|
|
109
119
|
describe "Month" do
|