partial-date 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,3 @@
1
+ -
2
+ ChangeLog.textile
3
+ LICENSE.txt
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ coverage/
2
+ .yardoc/
3
+ doc/
4
+ pkg/
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour --format documentation
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ --plugin yard-tomdoc --markup textile --title "PartialDate Documentation" --protected
data/ChangeLog.textile ADDED
@@ -0,0 +1,4 @@
1
+ h3. 0.1.0 / 2012-05-26
2
+
3
+ * Initial release:
4
+
data/Guardfile ADDED
@@ -0,0 +1,8 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec', :version => 2 do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012 Anthony Bouch
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.textile ADDED
@@ -0,0 +1,59 @@
1
+ h1. partial-date
2
+
3
+ * "Homepage":https://github.com/58bits/partial-date#readme
4
+ * "Issues":https://github.com/58bits/partial-date/issues
5
+ * "Documentation":http://rubydoc.info/gems/partial-date/frames
6
+
7
+ h2. Description
8
+
9
+ A simple date class that can be used to store partial date values in a single column/attribute. An example use case would include an archive, or catalogue entry where the complete date is unknown.
10
+
11
+ h2. Features
12
+
13
+ PartialDate::Date uses an 8 digit integer to store year, month and day values. Values for month and day are optional.
14
+
15
+ h2. Examples
16
+
17
+ bc.. require 'partial-date'
18
+
19
+ #Default initializer
20
+ date = PartialDate::Date.new
21
+ # =>
22
+ date.value
23
+ # => 0
24
+
25
+ # Initialize from a block of integers
26
+ date = PartialDate::Date.new {|d| d.year = 2012, d.month = 01}
27
+ # => 2012-01
28
+ date.value
29
+ # => 20120100
30
+
31
+ # Initialize from a block of strings
32
+ date = PartialDate::Date.new {|d| d.year = "2012", d.month = "01"}
33
+ # => 2012-01
34
+ date.value
35
+ # => 20120100
36
+
37
+ # Initialize from the class load method - for rehydrating a date instance from a stored integer date value.
38
+ date = PartialDate::Date.load 20121201
39
+ # => 2012-12-01
40
+ date.year
41
+ # => 2012
42
+ date.month
43
+ # => 12
44
+ date.day
45
+ # => 1
46
+
47
+ h2. Install
48
+
49
+ @$ gem install partial-date@
50
+
51
+ h2. TODO
52
+
53
+ Implement @PartialDate::Date.parse@ method for construction from strings.
54
+
55
+ h2. Copyright
56
+
57
+ Copyright (c) 2012 Anthony Bouch
58
+
59
+ See {file:LICENSE.txt} for details.
data/Rakefile ADDED
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'rake'
5
+
6
+ begin
7
+ gem 'rubygems-tasks', '~> 0.2'
8
+ require 'rubygems/tasks'
9
+
10
+ Gem::Tasks.new
11
+ rescue LoadError => e
12
+ warn e.message
13
+ warn "Run `gem install rubygems-tasks` to install 'rubygems/tasks'."
14
+ end
15
+
16
+ begin
17
+ gem 'rspec', '~> 2.4'
18
+ require 'rspec/core/rake_task'
19
+
20
+ RSpec::Core::RakeTask.new
21
+ rescue LoadError => e
22
+ task :spec do
23
+ abort "Please run `gem install rspec` to install RSpec."
24
+ end
25
+ end
26
+
27
+ task :test => :spec
28
+ task :default => :spec
29
+
30
+ begin
31
+ gem 'yard', '~> 0.7'
32
+ require 'yard'
33
+
34
+ YARD::Rake::YardocTask.new
35
+ rescue LoadError => e
36
+ task :yard do
37
+ abort "Please run `gem install yard` to install YARD."
38
+ end
39
+ end
40
+ task :doc => :yard
@@ -0,0 +1,4 @@
1
+ require 'partial-date/version'
2
+ require 'partial-date/error'
3
+ require 'partial-date/date'
4
+ require 'date'
@@ -0,0 +1,209 @@
1
+
2
+ # Public module containing Date, Error and Version types.
3
+ module PartialDate
4
+
5
+ # Public: A class for handling partial date storage. Partial dates are stored
6
+ # as an 8 digit integer with optional month and day values.
7
+ #
8
+ # Examples
9
+ #
10
+ # date = PartialDate::Date.new
11
+ # date.year = 2012
12
+ # date.month = 12
13
+ # date.day = 1
14
+ #
15
+ # date = PartialDate::Date.new {|d| d.year = 2012; d.month = 12; d.day = 1}
16
+ #
17
+ # date = PartialDate::Date.new {|d| d.year = 2012 }
18
+ #
19
+ class Date
20
+
21
+ # Public: Create a new partial date class from a block of integers
22
+ # or strings.
23
+ #
24
+ # Examples
25
+ #
26
+ # # From integers
27
+ # date = PartialDate::Date.new {|d| d.year = 2012; d.month = 12; d.day = 1}
28
+ # date.value
29
+ # # => 20121201
30
+ #
31
+ # # From strings
32
+ # date = PartialDate::Date.new {|d| d.year = "2012"; d.month = "12"; d.day = "1"}
33
+ # date.value
34
+ # # => 20121201
35
+ #
36
+ # Returns a date object.
37
+ def initialize
38
+ yield self if block_given?
39
+ end
40
+
41
+
42
+ # Public: Get the integer date value in partial date format.
43
+ #
44
+ # Examples
45
+ #
46
+ # date.year = "2012"
47
+ # date.value
48
+ # # => 20120000
49
+ #
50
+ # Returns an integer representation of a partial date.
51
+ def value
52
+ @value ||= 0
53
+ end
54
+
55
+ # Public: Set a date value using an interger in partial date format.
56
+ #
57
+ # Examples
58
+ #
59
+ # date.value = 20121200
60
+ #
61
+ # Returns nothing
62
+ def value=(value)
63
+ if value.is_a?(Integer) && (value >= 10000 && value <= 99991231)
64
+ @value = value
65
+ else
66
+ raise PartialDateError, "Date value must be an integer betwen 10000 and 99991231"
67
+ end
68
+ end
69
+
70
+ # Public: Loads an 8 digit date value into a date object.
71
+ #
72
+ # value - an 8 digit value in partial date format.
73
+ #
74
+ # Examples
75
+ #
76
+ # date = PartialDate::Date.load 201212201
77
+ # date.value
78
+ # # => 20120000
79
+ # date.year
80
+ # # => 2012
81
+ # date.month
82
+ # # => 12
83
+ # date.day
84
+ # # => 0
85
+ #
86
+ # Returns date object
87
+ def self.load(value)
88
+ PartialDate::Date.new {|d| d.value = value}
89
+ end
90
+
91
+
92
+ # Public: Sets the year portion of a partial date.
93
+ #
94
+ # value - The string or integer value for a year.
95
+ #
96
+ # Examples
97
+ # date.year = "2000"
98
+ # date.value
99
+ # # => 20000000
100
+ #
101
+ # Returns nothing
102
+ def year=(value)
103
+
104
+ if value.nil?
105
+ raise PartialDateError, "Year cannot be nil"
106
+ end
107
+
108
+ if value.is_a?(String)
109
+ if value =~ /\A\d{4}\z/
110
+ value = value.to_i
111
+ else
112
+ raise PartialDateError, "Year must be a valid four digit string or integer between 1 and 9999"
113
+ end
114
+ end
115
+
116
+ if value.is_a?(Integer) && (value <= 9999 && value > 0)
117
+ @value = (self.value - self.year) * 10000 + (value * 10000)
118
+ else
119
+ raise PartialDateError, "Year must be an integer between 1 and 9999"
120
+ end
121
+ end
122
+
123
+ # Public: Get the year from a partial date.
124
+ def year
125
+ self.value > 9999 ? (self.value / 10000).abs : 0
126
+ end
127
+
128
+ # Public: Set the month of a partial date.
129
+ def month=(value)
130
+
131
+ raise PartialDateError, "A year must be set before a month" if year == 0
132
+
133
+ value = 0 if value.nil?
134
+
135
+ if value.is_a?(String)
136
+ if value =~ /\A\d{1,2}\z/
137
+ value = value.to_i
138
+ else
139
+ raise PartialDateError, "Month must be a valid one or two digit string or integer between 1 and 12"
140
+ end
141
+ end
142
+
143
+ if value.is_a?(Integer) && (value <= 12 && value >= 0)
144
+ @value = self.value - (self.month * 100) + (value * 100)
145
+ else
146
+ raise PartialDateError, "Month must an be integer between 1 and 12"
147
+ end
148
+ end
149
+
150
+ # Public: Get the month from a partial date.
151
+ def month
152
+ self.value > 99 ? ((self.value - (self.value / 10000).abs * 10000) / 100).abs : 0
153
+ end
154
+
155
+
156
+ # Public: Set the day portion of a partial date. Day is optional so zero,
157
+ # nil and empty strings are allowed.
158
+ def day=(value)
159
+
160
+ raise PartialDateError, "A year and month must be set before a day" if year == 0 && month == 0
161
+
162
+ value = 0 if value.nil?
163
+
164
+ if value.is_a?(String)
165
+ if value =~ /\A\d{1,2}\z/
166
+ value = value.to_i
167
+ else
168
+ raise PartialDateError, "Day must be a valid one or two digit string or integer between 1 and 31"
169
+ end
170
+ end
171
+
172
+ if value.is_a?(Integer) && (value >= 0 && value <= 31)
173
+ begin
174
+ date = ::Date.civil(self.year, self.month, value) if value > 0
175
+ @value = (self.value - self.day + value)
176
+ rescue
177
+ raise PartialDateError, "Day must be a valid day for the given month"
178
+ end
179
+ else
180
+ raise PartialDateError, "Day must be an integer between 1 and 31"
181
+ end
182
+ end
183
+
184
+ # Public: Get the day from a partial date.
185
+ def day
186
+ self.value > 0 ? self.value - (self.value / 100).abs * 100 : 0
187
+ end
188
+
189
+ # Public: Returns a formatted string representation of the partial date.
190
+ #
191
+ # Examples
192
+ #
193
+ # date = PartialDate::Date.new {|d| d.year = 2012, d.month = 12, d.day = 31}
194
+ # date.to_s
195
+ # # => "2012-12-31"
196
+ #
197
+ # Returns string representation of date.
198
+ def to_s
199
+ if self.year > 0
200
+ result = self.year.to_s
201
+ result = result + "-" + self.month.to_s if self.month > 0
202
+ result = result + "-" + self.day.to_s if self.day > 0
203
+ return result
204
+ else
205
+ return ""
206
+ end
207
+ end
208
+ end
209
+ end
@@ -0,0 +1,4 @@
1
+ module PartialDate
2
+ class PartialDateError < StandardError
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module PartialDate
2
+ # partial-date version
3
+ VERSION = "0.1.0"
4
+ end
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require File.expand_path('../lib/partial-date/version', __FILE__)
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "partial-date"
7
+ gem.version = PartialDate::VERSION
8
+ gem.summary = "A simple date class that can be used to store partial date values in a single column/attribute."
9
+ gem.description = "A simple date class that can be used to store partial date values in a single column/attribute. An example use case would include an archive, or catalogue entry where the complete date is unknown."
10
+ gem.license = "MIT"
11
+ gem.authors = ["Anthony Bouch"]
12
+ gem.email = ["tony@58bits.com"]
13
+ gem.homepage = "https://github.com/58bits/partial-date#readme"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_development_dependency "rubygems-tasks", "~> 0.2"
21
+ gem.add_development_dependency "rspec", "~> 2.4"
22
+ gem.add_development_dependency "yard", "~> 0.7"
23
+ end
@@ -0,0 +1,167 @@
1
+ require 'spec_helper'
2
+ require 'partial-date'
3
+
4
+ describe PartialDate::Date do
5
+
6
+ let(:date) { PartialDate::Date.new }
7
+
8
+ it "should have a VERSION constant" do
9
+ PartialDate.const_get('VERSION').should_not be_empty
10
+ end
11
+
12
+ it "should have a readable value attribute" do
13
+ date.year = 2000
14
+ date.value.should == 20000000
15
+ end
16
+
17
+ it "should allow construction from a block of integers" do
18
+ new_date = PartialDate::Date.new {|d| d.year = 2010; d.month = 12; d.day = 1}
19
+ new_date.value.should == 20101201
20
+ end
21
+
22
+ it "should allow construction from a block of strings" do
23
+ new_date = PartialDate::Date.new {|d| d.year = "2010"; d.month = "12"; d.day = "1"}
24
+ new_date.value.should == 20101201
25
+ end
26
+
27
+ it "should allow construction from the class load method" do
28
+ new_date = PartialDate::Date.load(20120000)
29
+ new_date.year.should == 2012
30
+ new_date.month.should == 0
31
+ new_date.day.should == 0
32
+ end
33
+
34
+ it "should allow a date value in partial date format to be set in a date instance" do
35
+ new_date = PartialDate::Date.new {|d| d.value = 20120000}
36
+ new_date.year.should == 2012
37
+ new_date.month.should == 0
38
+ new_date.day.should == 0
39
+ new_date.value.should == 20120000
40
+ end
41
+
42
+ it "should not allow an invalid date value to be set in a date instance" do
43
+ expect {new_date = PartialDate::Date.new {|d| d.value = 100000000}}.to raise_error(PartialDate::PartialDateError, "Date value must be an integer betwen 10000 and 99991231")
44
+ end
45
+
46
+ it "should return a string represntation of date in the correct format" do
47
+ new_date = PartialDate::Date.new {|d| d.year = 2012; d.month = 12; d.day = 31}
48
+ new_date.to_s.should match(/\A\d{4}-\d{2}-\d{2}\z/)
49
+ end
50
+
51
+ it "should return a string represntation of a partial date in the correct format" do
52
+ new_date = PartialDate::Date.new {|d| d.year = 2012; d.month = 12}
53
+ new_date.to_s.should match(/\A\d{4}-\d{2}\z/)
54
+ end
55
+
56
+ it "should return a string represntation of a partial date in the correct format" do
57
+ new_date = PartialDate::Date.new {|d| d.year = 2012}
58
+ new_date.to_s.should match(/\A\d{4}\z/)
59
+ end
60
+
61
+ describe "Year" do
62
+ it "should raise an error if year is set to nil" do
63
+ expect {date.year = nil}.to raise_error(PartialDate::PartialDateError)
64
+ end
65
+
66
+ it "should raise an error if year is set to an invalid string" do
67
+ expect {date.year = "ABCD" }.to raise_error(PartialDate::PartialDateError, "Year must be a valid four digit string or integer between 1 and 9999")
68
+ end
69
+
70
+ it "should raise an error if year is set to a five digit string" do
71
+ expect {date.year = "10000" }.to raise_error(PartialDate::PartialDateError, "Year must be a valid four digit string or integer between 1 and 9999")
72
+ end
73
+
74
+ it "should raise an error if year is set to a value greater than 9999" do
75
+ expect {date.year = 10000 }.to raise_error(PartialDate::PartialDateError, "Year must be an integer between 1 and 9999")
76
+ end
77
+
78
+ it "should raise an error if year is set to zero" do
79
+ expect {date.year = 0 }.to raise_error(PartialDate::PartialDateError, "Year must be an integer between 1 and 9999")
80
+ end
81
+
82
+ it "should raise an error if year is set to a value less than zero" do
83
+ expect {date.year = -1 }.to raise_error(PartialDate::PartialDateError, "Year must be an integer between 1 and 9999")
84
+ end
85
+
86
+ it "should return a year when a year is set" do
87
+ date.year = 2050
88
+ date.year.should == 2050
89
+ end
90
+ end
91
+
92
+ describe "Month" do
93
+ before(:each) { date.year = 2000 }
94
+
95
+ it "should raise an error if a month is set before a year" do
96
+ no_year = PartialDate::Date.new
97
+ expect {no_year.month = 10}.to raise_error(PartialDate::PartialDateError, "A year must be set before a month")
98
+ end
99
+
100
+ it "should raise an error if month is set to an invalid string" do
101
+ expect {date.month = "AB"}.to raise_error(PartialDate::PartialDateError, "Month must be a valid one or two digit string or integer between 1 and 12")
102
+ end
103
+
104
+ it "should raise an error if month is set to a value greater than 12" do
105
+ expect {date.month = 13}.to raise_error(PartialDate::PartialDateError, "Month must an be integer between 1 and 12")
106
+ end
107
+
108
+ it "should raise an error if month is set to a value less than zero" do
109
+ expect {date.month = -1}.to raise_error(PartialDate::PartialDateError, "Month must an be integer between 1 and 12")
110
+ end
111
+
112
+ it "should allow the month to be set to zero" do
113
+ date.month = 0
114
+ date.month.should == 0
115
+ end
116
+
117
+ it "should return zero if month is set to nil" do
118
+ date.month = nil
119
+ date.month.should == 0
120
+ end
121
+
122
+ it "should return a month when a month is set" do
123
+ date.month = 10
124
+ date.month.should == 10
125
+ end
126
+ end
127
+
128
+ describe "Day" do
129
+ before(:each) { date.year = 2000; date.month = 6 }
130
+
131
+ it "should raise an error if a day is set before a year and month" do
132
+ no_month = PartialDate::Date.new
133
+ expect {no_month.day = 10}.to raise_error(PartialDate::PartialDateError, "A year and month must be set before a day")
134
+ end
135
+
136
+ it "should raise an error if day is set to an invalid string" do
137
+ expect {date.day = "AB"}.to raise_error(PartialDate::PartialDateError, "Day must be a valid one or two digit string or integer between 1 and 31")
138
+ end
139
+
140
+ it "should raise an error if day is set to a value less than zero" do
141
+ expect {date.day = -1}.to raise_error(PartialDate::PartialDateError, "Day must be an integer between 1 and 31")
142
+ end
143
+
144
+ it "should raise an error if day is set to a value greater than 31" do
145
+ expect {date.day = 32}.to raise_error(PartialDate::PartialDateError, "Day must be an integer between 1 and 31")
146
+ end
147
+
148
+ it "should raise an error if the day is an invalid day for the given month" do
149
+ expect {date.day = 31}.to raise_error(PartialDate::PartialDateError, "Day must be a valid day for the given month")
150
+ end
151
+
152
+ it "should return zero when set to nil" do
153
+ date.day = nil
154
+ date.day.should == 0
155
+ end
156
+
157
+ it "should allow the day to be set to zero" do
158
+ date.day = 0
159
+ date.day.should == 0
160
+ end
161
+
162
+ it "should return a day when a day is set" do
163
+ date.day = 10
164
+ date.day.should == 10
165
+ end
166
+ end
167
+ end
@@ -0,0 +1,4 @@
1
+ gem 'rspec', '~> 2.4'
2
+ require 'rspec'
3
+ require 'partial-date/version'
4
+
metadata ADDED
@@ -0,0 +1,115 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: partial-date
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Anthony Bouch
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-26 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rubygems-tasks
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '0.2'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '0.2'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '2.4'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '2.4'
46
+ - !ruby/object:Gem::Dependency
47
+ name: yard
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '0.7'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '0.7'
62
+ description: A simple date class that can be used to store partial date values in
63
+ a single column/attribute. An example use case would include an archive, or catalogue
64
+ entry where the complete date is unknown.
65
+ email:
66
+ - tony@58bits.com
67
+ executables: []
68
+ extensions: []
69
+ extra_rdoc_files: []
70
+ files:
71
+ - .document
72
+ - .gitignore
73
+ - .rspec
74
+ - .yardopts
75
+ - ChangeLog.textile
76
+ - Guardfile
77
+ - LICENSE.txt
78
+ - README.textile
79
+ - Rakefile
80
+ - lib/partial-date.rb
81
+ - lib/partial-date/date.rb
82
+ - lib/partial-date/error.rb
83
+ - lib/partial-date/version.rb
84
+ - partial-date.gemspec
85
+ - spec/partial-date_spec.rb
86
+ - spec/spec_helper.rb
87
+ homepage: https://github.com/58bits/partial-date#readme
88
+ licenses:
89
+ - MIT
90
+ post_install_message:
91
+ rdoc_options: []
92
+ require_paths:
93
+ - lib
94
+ required_ruby_version: !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ required_rubygems_version: !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
103
+ - - ! '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ requirements: []
107
+ rubyforge_project:
108
+ rubygems_version: 1.8.23
109
+ signing_key:
110
+ specification_version: 3
111
+ summary: A simple date class that can be used to store partial date values in a single
112
+ column/attribute.
113
+ test_files:
114
+ - spec/partial-date_spec.rb
115
+ - spec/spec_helper.rb