expanded_date 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/expanded_date.rb +33 -2
  2. data/test/datetest.rb +51 -30
  3. metadata +3 -3
data/lib/expanded_date.rb CHANGED
@@ -1,6 +1,36 @@
1
+ #=Expanded date
2
+ #Jon Egil Strand
3
+ #
4
+ #Adds extra functionality to the regular Date class. Methods such as tomorrow,
5
+ #yesterday, next_week, prev_week are syntactic sugar for date +/- 1 (or 7).
6
+ #Their main use is for readability of code if one so wishes.
7
+ #
8
+ #The month functions are really handy when working with specific periods. In my
9
+ #experience these are quite often tied to beginning- and end of months rather than
10
+ #specific dates. I.e. "end of March, end of April, ... " instead of "31st March,
11
+ #30th April, ..." in a lot of cases.
12
+ #
13
+
1
14
  require 'date'
2
15
 
3
16
  class Date
17
+ def tomorrow
18
+ self + 1
19
+ end
20
+
21
+ def yesterday
22
+ self - 1
23
+ end
24
+
25
+ def next_week
26
+ self + 7
27
+ end
28
+
29
+ def prev_week
30
+ self - 7
31
+ end
32
+
33
+ #This date in previous month
4
34
  def prev_month
5
35
  m = month - 1
6
36
  y = year
@@ -10,8 +40,9 @@ class Date
10
40
  end
11
41
  d = day
12
42
  self::class.civil(y,m,d)
13
- end
14
-
43
+ end
44
+
45
+ #This date in next month. Raises ArgumentError: invalid date if the date does not exist.
15
46
  def next_month
16
47
  m = month + 1
17
48
  y = year
data/test/datetest.rb CHANGED
@@ -2,60 +2,81 @@ require 'test/unit'
2
2
  require 'lib/expanded_date'
3
3
 
4
4
  class Datetest < Test::Unit::TestCase
5
- def test_next
5
+
6
+ def test_tomorrow
7
+ d = Date.parse("2004-02-28")
8
+ assert_equal("2004-02-29", d.tomorrow.to_s)
9
+ end
10
+
11
+ def test_yesterday
12
+ d = Date.parse("2004-03-01")
13
+ assert_equal("2004-02-29", d.yesterday.to_s)
14
+ end
15
+
16
+ def test_next_week
17
+ d = Date.parse("2004-02-28")
18
+ assert_equal("2004-03-06", d.next_week.to_s)
19
+ end
20
+
21
+ def test_prev_week
22
+ d = Date.parse("2004-02-28")
23
+ assert_equal("2004-02-21", d.prev_week.to_s)
24
+ end
25
+
26
+ def test_next_month
6
27
  d = Date.parse("2000-01-01")
7
- assert_equal(d.to_s, "2000-01-01")
8
- assert_equal(d.next_month.to_s, "2000-02-01")
9
- assert_equal(d.next_month.next_month.to_s, "2000-03-01")
28
+ assert_equal("2000-01-01", d.to_s)
29
+ assert_equal("2000-02-01", d.next_month.to_s)
30
+ assert_equal("2000-03-01", d.next_month.next_month.to_s)
10
31
  end
11
32
 
12
- def test_prev
33
+ def test_prev_month
13
34
  d = Date.parse("2000-01-01")
14
- assert_equal(d.to_s, "2000-01-01")
15
- assert_equal(d.prev_month.to_s, "1999-12-01")
16
- assert_equal(d.prev_month.prev_month.to_s, "1999-11-01")
35
+ assert_equal("2000-01-01", d.to_s)
36
+ assert_equal("1999-12-01", d.prev_month.to_s)
37
+ assert_equal("1999-11-01", d.prev_month.prev_month.to_s)
17
38
  end
18
39
 
19
40
  def test_end_of_month
20
- assert_equal(Date.parse("2000-02-13").end_of_month.to_s, "2000-02-29")
21
- assert_equal(Date.parse("2001-02-13").end_of_month.to_s, "2001-02-28")
41
+ assert_equal("2000-02-29", Date.parse("2000-02-13").end_of_month.to_s)
42
+ assert_equal("2001-02-28", Date.parse("2001-02-13").end_of_month.to_s)
22
43
  end
23
44
 
24
45
  def test_beginning_of_month
25
- assert_equal(Date.parse("2000-02-13").beginning_of_month.to_s, "2000-02-01")
26
- assert_equal(Date.parse("2001-02-13").beginning_of_month.to_s, "2001-02-01")
46
+ assert_equal("2000-02-01", Date.parse("2000-02-13").beginning_of_month.to_s)
47
+ assert_equal("2001-02-01", Date.parse("2001-02-13").beginning_of_month.to_s)
27
48
  end
28
49
 
29
50
  def test_beginning_of_next_month
30
- assert_equal(Date.parse("1999-12-13").beginning_of_next_month.to_s, "2000-01-01")
31
- assert_equal(Date.parse("2000-01-13").beginning_of_next_month.to_s, "2000-02-01")
32
- assert_equal(Date.parse("2000-02-13").beginning_of_next_month.to_s, "2000-03-01")
33
- assert_equal(Date.parse("2001-02-13").beginning_of_next_month.to_s, "2001-03-01")
51
+ assert_equal("2000-01-01", Date.parse("1999-12-13").beginning_of_next_month.to_s)
52
+ assert_equal("2000-02-01", Date.parse("2000-01-13").beginning_of_next_month.to_s)
53
+ assert_equal("2000-03-01", Date.parse("2000-02-13").beginning_of_next_month.to_s)
54
+ assert_equal("2001-03-01", Date.parse("2001-02-13").beginning_of_next_month.to_s)
34
55
  end
35
56
 
36
57
  def test_beginning_of_prev_month
37
- assert_equal(Date.parse("1999-12-13").beginning_of_prev_month.to_s, "1999-11-01")
38
- assert_equal(Date.parse("2000-01-13").beginning_of_prev_month.to_s, "1999-12-01")
39
- assert_equal(Date.parse("2000-02-13").beginning_of_prev_month.to_s, "2000-01-01")
40
- assert_equal(Date.parse("2001-03-13").beginning_of_prev_month.to_s, "2001-02-01")
58
+ assert_equal("1999-11-01", Date.parse("1999-12-13").beginning_of_prev_month.to_s)
59
+ assert_equal("1999-12-01", Date.parse("2000-01-13").beginning_of_prev_month.to_s)
60
+ assert_equal("2000-01-01", Date.parse("2000-02-13").beginning_of_prev_month.to_s)
61
+ assert_equal("2001-02-01", Date.parse("2001-03-13").beginning_of_prev_month.to_s)
41
62
  end
42
63
 
43
64
  def test_end_of_next_month
44
- assert_equal(Date.parse("1999-12-13").end_of_next_month.to_s, "2000-01-31")
45
- assert_equal(Date.parse("2000-01-13").end_of_next_month.to_s, "2000-02-29")
46
- assert_equal(Date.parse("2000-02-13").end_of_next_month.to_s, "2000-03-31")
47
- assert_equal(Date.parse("2001-02-13").end_of_next_month.to_s, "2001-03-31")
65
+ assert_equal("2000-01-31", Date.parse("1999-12-13").end_of_next_month.to_s)
66
+ assert_equal("2000-02-29", Date.parse("2000-01-13").end_of_next_month.to_s)
67
+ assert_equal("2000-03-31", Date.parse("2000-02-13").end_of_next_month.to_s)
68
+ assert_equal("2001-03-31", Date.parse("2001-02-13").end_of_next_month.to_s)
48
69
  end
49
70
 
50
71
  def test_end_of_prev_month
51
- assert_equal(Date.parse("1999-12-13").end_of_prev_month.to_s, "1999-11-30")
52
- assert_equal(Date.parse("2000-01-13").end_of_prev_month.to_s, "1999-12-31")
53
- assert_equal(Date.parse("2000-02-13").end_of_prev_month.to_s, "2000-01-31")
54
- assert_equal(Date.parse("2001-03-13").end_of_prev_month.to_s, "2001-02-28")
72
+ assert_equal("1999-11-30", Date.parse("1999-12-13").end_of_prev_month.to_s)
73
+ assert_equal("1999-12-31", Date.parse("2000-01-13").end_of_prev_month.to_s)
74
+ assert_equal("2000-01-31", Date.parse("2000-02-13").end_of_prev_month.to_s)
75
+ assert_equal("2001-02-28", Date.parse("2001-03-13").end_of_prev_month.to_s)
55
76
  end
56
77
 
57
78
  def test_long_conversion
58
- assert_equal(Date.today.next_month.next_month.end_of_prev_month, Date.today.end_of_next_month)
59
- assert_equal(Date.today, Date.today.next_month.next_month.next_month.prev_month.prev_month.prev_month)
79
+ assert_equal(Date.today.end_of_next_month, Date.today.next_month.next_month.end_of_prev_month)
80
+ assert_equal(Date.today.next_month.next_month.next_month.prev_month.prev_month.prev_month, Date.today)
60
81
  end
61
82
  end
metadata CHANGED
@@ -3,9 +3,9 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: expanded_date
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.2
7
- date: 2006-07-19 00:00:00 +02:00
8
- summary: Adds extra functionality to date
6
+ version: 0.2.0
7
+ date: 2006-07-20 00:00:00 +02:00
8
+ summary: Adds extra functionality to date, such as .yesterday, .next_week, .end_of_next_month, .beginning_of_prev_month ... and the like
9
9
  require_paths:
10
10
  - lib
11
11
  email: jes@luretanker.no