timetress 0.0.2 → 0.0.3
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/.travis.yml +9 -0
- data/README.md +9 -7
- data/lib/timetress/holiday.rb +29 -2
- data/lib/timetress/norway/holiday.rb +11 -4
- data/lib/timetress/norway.rb +2 -0
- data/lib/timetress/version.rb +1 -1
- data/spec/holiday_spec.rb +21 -4
- data/spec/norway/holiday_spec.rb +6 -0
- data/timetress.gemspec +2 -0
- metadata +16 -3
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
Knows about workdays and holidays, public and otherwise.
|
4
4
|
Answers the age-old question _When is mothersday this year?_.
|
5
5
|
|
6
|
+
[](http://travis-ci.org/kytrinyx/timetress)
|
7
|
+
|
6
8
|
## Installation
|
7
9
|
|
8
10
|
Add this line to your application's Gemfile:
|
@@ -22,17 +24,17 @@ Or install it yourself as:
|
|
22
24
|
### Timetress knows about holidays
|
23
25
|
|
24
26
|
```
|
25
|
-
Timetress.
|
26
|
-
=> #<Date: 2012-
|
27
|
+
Timetress.christmas 2012
|
28
|
+
=> #<Date: 2012-12-25>
|
27
29
|
```
|
28
30
|
|
29
31
|
```
|
30
|
-
#
|
31
|
-
Timetress.
|
32
|
-
=> #<Date: 2012-
|
32
|
+
# On New Year's Eve, 2011
|
33
|
+
Timetress.next_christmas
|
34
|
+
=> #<Date: 2012-12-25>
|
33
35
|
```
|
34
36
|
|
35
|
-
### Public Holidays
|
37
|
+
### Public Holidays (Norway only)
|
36
38
|
|
37
39
|
> A public holiday, national holiday or legal holiday is a holiday generally established by law and is usually a non-working day during the year.
|
38
40
|
> - Wikipedia
|
@@ -64,7 +66,7 @@ Timetress::Norway.nth_workday_after 1, Date.new(2012, 10, 25)
|
|
64
66
|
|
65
67
|
## Implemented holidays (Norway)
|
66
68
|
|
67
|
-
Public holidays are emphasized.
|
69
|
+
Public holidays are emphasized below.
|
68
70
|
|
69
71
|
* *New Year's Day*: January 1st.
|
70
72
|
* Mothersday: Second Sunday in February.
|
data/lib/timetress/holiday.rb
CHANGED
@@ -3,6 +3,8 @@ module Timetress
|
|
3
3
|
|
4
4
|
JANUARY = 1
|
5
5
|
FEBRUARY = 2
|
6
|
+
MAY = 5
|
7
|
+
NOVEMBER = 11
|
6
8
|
DECEMBER = 12
|
7
9
|
|
8
10
|
def new_years_day(year)
|
@@ -53,16 +55,41 @@ module Timetress
|
|
53
55
|
Date.new(year, DECEMBER, 26)
|
54
56
|
end
|
55
57
|
|
58
|
+
def new_years_eve(year)
|
59
|
+
Date.new(year, DECEMBER, 31)
|
60
|
+
end
|
61
|
+
|
56
62
|
def official_holidays(year)
|
57
|
-
raise NotImplementedError
|
63
|
+
raise NotImplementedError.new localization_error_message
|
64
|
+
end
|
65
|
+
|
66
|
+
def mothersday(year)
|
67
|
+
raise NotImplementedError.new localization_error_message
|
68
|
+
end
|
69
|
+
|
70
|
+
def fathersday(year)
|
71
|
+
raise NotImplementedError.new localization_error_message
|
72
|
+
end
|
73
|
+
|
74
|
+
def labour_day(year)
|
75
|
+
raise NotImplementedError.new localization_error_message
|
76
|
+
end
|
77
|
+
alias_method :labor_day, :labour_day
|
78
|
+
|
79
|
+
def national_holiday(year)
|
80
|
+
raise NotImplementedError.new localization_error_message
|
58
81
|
end
|
59
82
|
|
60
83
|
private
|
61
84
|
|
85
|
+
def localization_error_message
|
86
|
+
"Different in different countries. Try the Norway module."
|
87
|
+
end
|
88
|
+
|
62
89
|
def next_holiday(holiday, given_date)
|
63
90
|
given_date ||= Date.today
|
64
91
|
|
65
|
-
unless given_date.respond_to?(:
|
92
|
+
unless given_date.respond_to?(:asctime)
|
66
93
|
raise ArgumentError.new("#{given_date.inspect} must be a date or time object")
|
67
94
|
end
|
68
95
|
|
@@ -3,9 +3,6 @@ module Timetress
|
|
3
3
|
module Holiday
|
4
4
|
include Timetress::Holiday
|
5
5
|
|
6
|
-
MAY = 5
|
7
|
-
NOVEMBER = 11
|
8
|
-
|
9
6
|
def mothersday(year)
|
10
7
|
second_sunday_in(FEBRUARY, year)
|
11
8
|
end
|
@@ -23,6 +20,16 @@ module Timetress
|
|
23
20
|
Date.new(year, MAY, 17)
|
24
21
|
end
|
25
22
|
|
23
|
+
def christmas(year)
|
24
|
+
raise AmbiguousHolidayError.new("Do you mean `christmas_eve` or `first_day_of_christmas`?")
|
25
|
+
end
|
26
|
+
|
27
|
+
def first_day_of_christmas(year)
|
28
|
+
Date.new(year, DECEMBER, 25)
|
29
|
+
end
|
30
|
+
|
31
|
+
alias_method :second_day_of_christmas, :boxing_day
|
32
|
+
|
26
33
|
def official_holidays(year)
|
27
34
|
[
|
28
35
|
new_years_day(year),
|
@@ -35,7 +42,7 @@ module Timetress
|
|
35
42
|
ascension(year),
|
36
43
|
pentecost_sunday(year),
|
37
44
|
pentecost_monday(year),
|
38
|
-
|
45
|
+
first_day_of_christmas(year),
|
39
46
|
boxing_day(year)
|
40
47
|
]
|
41
48
|
end
|
data/lib/timetress/norway.rb
CHANGED
data/lib/timetress/version.rb
CHANGED
data/spec/holiday_spec.rb
CHANGED
@@ -82,9 +82,23 @@ describe Timetress::Holiday do
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
+
describe "New Year's Eve" do
|
86
|
+
it "is on Dec 31st" do
|
87
|
+
Timetress.new_years_eve(2011).should eq Date.new(2011, 12, 31)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
85
91
|
describe "official holidays" do
|
86
92
|
it "must be implemented in subclass" do
|
87
|
-
|
93
|
+
lambda { Timetress.official_holidays(2012) }.should raise_error
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "it complains helpfully about" do
|
98
|
+
[:mothersday, :fathersday, :labor_day, :labour_day, :national_holiday].each do |holiday|
|
99
|
+
specify holiday.to_s do
|
100
|
+
lambda { Timetress.send(holiday, 2012) }.should raise_error /Norway/
|
101
|
+
end
|
88
102
|
end
|
89
103
|
end
|
90
104
|
|
@@ -109,9 +123,12 @@ describe Timetress::Holiday do
|
|
109
123
|
Timetress::Norway.next_pi_day.should eq(Timetress::Norway.next_pi_day(Date.today))
|
110
124
|
end
|
111
125
|
|
112
|
-
it "
|
113
|
-
|
114
|
-
|
126
|
+
it "rejects string input" do
|
127
|
+
lambda { Timetress::Norway.next_pi_day("a string") }.should raise_error(ArgumentError)
|
128
|
+
end
|
129
|
+
|
130
|
+
it "rejects integer input" do
|
131
|
+
lambda { Timetress::Norway.next_pi_day(1) }.should raise_error(ArgumentError)
|
115
132
|
end
|
116
133
|
|
117
134
|
end
|
data/spec/norway/holiday_spec.rb
CHANGED
data/timetress.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timetress
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,19 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
13
|
-
dependencies:
|
12
|
+
date: 2012-11-29 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &70165893417640 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70165893417640
|
14
25
|
description: Answers the age-old question 'When is mothersday this year?'
|
15
26
|
email:
|
16
27
|
- katrina.owen@gmail.com
|
@@ -19,6 +30,7 @@ extensions: []
|
|
19
30
|
extra_rdoc_files: []
|
20
31
|
files:
|
21
32
|
- .gitignore
|
33
|
+
- .travis.yml
|
22
34
|
- Gemfile
|
23
35
|
- LICENSE.txt
|
24
36
|
- README.md
|
@@ -64,3 +76,4 @@ test_files:
|
|
64
76
|
- spec/norway/holiday_spec.rb
|
65
77
|
- spec/norway/workday_spec.rb
|
66
78
|
- spec/workday_spec.rb
|
79
|
+
has_rdoc:
|