date_ext 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/date_ext.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{date_ext}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["hasclass"]
data/lib/quarter.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  class Quarter
2
+ include Comparable
3
+
2
4
  attr_accessor :year, :quarter
3
5
 
4
6
  def initialize(year, quarter)
@@ -10,25 +12,40 @@ class Quarter
10
12
  Year.new(@year)
11
13
  end
12
14
 
13
- # def -(x)
14
- # if x.is_a?(Numeric)
15
- # return self.class.new(@year - x)
16
- # elsif x.is_a?(Quarter)
17
- # return @year - x.year
18
- # else
19
- # raise TypeError, 'expected numeric or year'
20
- # end
21
- # end
22
- #
23
- # def +(x)
24
- # if x.is_a?(Numeric)
25
- # return self.class.new(@year + x)
26
- # elsif x.is_a?(Quarter)
27
- # return @year + x.year
28
- # else
29
- # raise TypeError, 'expected numeric or year'
30
- # end
31
- # end
15
+ def <=>(other)
16
+ self.first_date <=> other.first_date
17
+ end
18
+
19
+ def -(x)
20
+ if x.is_a?(Numeric)
21
+ y = year - (x / 4)
22
+ q = quarter - (x % 4)
23
+ if q < 1
24
+ y -= 1
25
+ q += 4
26
+ end
27
+ return Quarter.new(y, q)
28
+ else
29
+ raise TypeError, 'expected numeric'
30
+ end
31
+ end
32
+
33
+ def +(x)
34
+ if x.is_a?(Numeric)
35
+ y = year + (x / 4)
36
+ q = quarter + (x % 4)
37
+ if q > 4
38
+ q -= 4
39
+ y += 1
40
+ end
41
+ return Quarter.new(y, q)
42
+ else
43
+ raise TypeError, 'expected numeric'
44
+ end
45
+ end
46
+
47
+ def next; self + 1; end
48
+ def previous; self - 1; end
32
49
 
33
50
  def months; (first_month..last_month).to_a; end
34
51
 
data/lib/year.rb CHANGED
@@ -1,10 +1,16 @@
1
1
  class Year
2
+ include Comparable
3
+
2
4
  attr_accessor :year
3
5
 
4
6
  def initialize(year)
5
7
  @year = year.to_i
6
8
  end
7
9
 
10
+ def <=>(other)
11
+ self.year <=> other.year
12
+ end
13
+
8
14
  def -(x)
9
15
  if x.is_a?(Numeric)
10
16
  return self.class.new(@year - x)
data/test/quarter_test.rb CHANGED
@@ -1,6 +1,33 @@
1
1
  require File.dirname(__FILE__) + '/test_helper'
2
2
 
3
3
  class QuarterTest < Test::Unit::TestCase
4
+ context "#next #previous" do
5
+ setup {
6
+ @quarter = Quarter.new(2009,1)
7
+ }
8
+
9
+ should "- 1" do
10
+ assert_equal Quarter.new(2008,4), @quarter - 1
11
+ end
12
+ should "- 2" do
13
+ assert_equal Quarter.new(2008,3), @quarter - 2
14
+ end
15
+ should "+ 1" do
16
+ assert_equal Quarter.new(2009,2), @quarter + 1
17
+ end
18
+ should "+ 4" do
19
+ assert_equal Quarter.new(2010,1), @quarter + 4
20
+ end
21
+
22
+ should "#next" do
23
+ assert_equal Quarter.new(2009,2), @quarter.next
24
+ end
25
+
26
+ should "#previous" do
27
+ assert_equal Quarter.new(2008,4), @quarter.previous
28
+ end
29
+
30
+ end
4
31
 
5
32
  context "Quarter 2009,1" do
6
33
  setup {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: date_ext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - hasclass