pseudo_date 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -38,10 +38,16 @@ class PseudoDate
38
38
  end
39
39
  end
40
40
 
41
+ # =====================
42
+ # = Boolean Questions =
43
+ # =====================
41
44
  def valid?
42
45
  !(@date_hash.nil? || @date_hash.empty?)
43
46
  end
44
47
 
48
+ # ====================
49
+ # = Export Functions =
50
+ # ====================
45
51
  def to_date
46
52
  self.valid? ? Date.parse("#{@year}-#{@month}-#{@day}") : nil rescue nil
47
53
  end
@@ -63,6 +69,58 @@ class PseudoDate
63
69
  @date_hash
64
70
  end
65
71
 
72
+ # ========================
73
+ # = Comparison Operators =
74
+ # ========================
75
+ def <(other)
76
+ case self.comparison_mode(other)
77
+ when 'exact'
78
+ self.to_date < other.to_date
79
+ when 'year_month'
80
+ self.year == other.year ? (self.month < other.month) : (self.year < other.year)
81
+ when 'year'
82
+ self.year < other.year
83
+ when 'mixed'
84
+ if self.precision == 'invalid'
85
+ true
86
+ elsif other.precision == 'invalid'
87
+ false
88
+ elsif self.year == other.year
89
+ if self.month == other.month
90
+ self.day.to_i < other.day.to_i
91
+ else
92
+ self.month < other.month
93
+ end
94
+ else
95
+ self.year < other.year
96
+ end
97
+ else
98
+ false
99
+ end
100
+ end
101
+
102
+ def >(other)
103
+ other < self
104
+ end
105
+
106
+ def ==(other)
107
+ (self.year == other.year) && (self.month == other.month) && (self.day == other.day)
108
+ end
109
+
110
+ def <=>(other)
111
+ self == other ? 0 : (self < other ? -1 : 1)
112
+ end
113
+
114
+ protected
115
+
116
+ def comparison_mode(other)
117
+ if self.precision == other.precision
118
+ self.precision
119
+ else
120
+ 'mixed'
121
+ end
122
+ end
123
+
66
124
  private
67
125
 
68
126
  def correct_digits
data/pseudo_date.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{pseudo_date}
5
- s.version = "0.1.2"
5
+ s.version = "0.1.3"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Patrick Tulskie"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pseudo_date
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
9
+ - 3
10
+ version: 0.1.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Patrick Tulskie