timetress 0.0.3 → 0.0.4
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/README.md +6 -0
- data/lib/timetress/holiday.rb +17 -2
- data/lib/timetress/version.rb +1 -1
- data/spec/holiday_spec.rb +29 -0
- metadata +4 -4
data/README.md
CHANGED
@@ -34,6 +34,12 @@ Timetress.next_christmas
|
|
34
34
|
=> #<Date: 2012-12-25>
|
35
35
|
```
|
36
36
|
|
37
|
+
```
|
38
|
+
# On Christmas Day, 2012
|
39
|
+
Timetress.previous_christmas
|
40
|
+
=> #<Date: 2011-12-25>
|
41
|
+
```
|
42
|
+
|
37
43
|
### Public Holidays (Norway only)
|
38
44
|
|
39
45
|
> 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.
|
data/lib/timetress/holiday.rb
CHANGED
@@ -102,11 +102,26 @@ module Timetress
|
|
102
102
|
the_day
|
103
103
|
end
|
104
104
|
|
105
|
+
def previous_holiday(holiday, given_date)
|
106
|
+
given_date ||= Date.today
|
107
|
+
|
108
|
+
unless given_date.respond_to?(:asctime)
|
109
|
+
raise ArgumentError.new("#{given_date.inspect} must be a date or time object")
|
110
|
+
end
|
111
|
+
|
112
|
+
the_day = self.send(holiday.to_sym, given_date.year)
|
113
|
+
|
114
|
+
if the_day >= given_date
|
115
|
+
the_day = self.send(holiday.to_sym, given_date.year - 1)
|
116
|
+
end
|
117
|
+
the_day
|
118
|
+
end
|
119
|
+
|
105
120
|
def method_missing(method, *args, &block)
|
106
121
|
if method.to_s =~ /^next_(.*)$/
|
107
122
|
next_holiday($1, args.first)
|
108
|
-
elsif method.to_s =~
|
109
|
-
|
123
|
+
elsif method.to_s =~ /^previous_(.*)$/
|
124
|
+
previous_holiday($1, args.first)
|
110
125
|
else
|
111
126
|
super
|
112
127
|
end
|
data/lib/timetress/version.rb
CHANGED
data/spec/holiday_spec.rb
CHANGED
@@ -130,6 +130,35 @@ describe Timetress::Holiday do
|
|
130
130
|
it "rejects integer input" do
|
131
131
|
lambda { Timetress::Norway.next_pi_day(1) }.should raise_error(ArgumentError)
|
132
132
|
end
|
133
|
+
end
|
134
|
+
|
135
|
+
describe "previous pi day" do
|
136
|
+
let(:last_pi_day) { Date.new(2010, 3, 14) }
|
137
|
+
let(:pi_day) { Date.new(2011, 3, 14) }
|
138
|
+
|
139
|
+
it "is this year if it has passed" do
|
140
|
+
Timetress.previous_pi_day(pi_day + 1).should eq(pi_day)
|
141
|
+
end
|
142
|
+
|
143
|
+
it "is last year if today is pi day" do
|
144
|
+
Timetress.previous_pi_day(pi_day).should eq(last_pi_day)
|
145
|
+
end
|
146
|
+
|
147
|
+
it "is last year if it is coming up" do
|
148
|
+
Timetress.previous_pi_day(pi_day - 1).should eq(last_pi_day)
|
149
|
+
end
|
133
150
|
|
151
|
+
it "default is relative to today" do
|
152
|
+
Timetress::Norway.previous_pi_day.should eq(Timetress::Norway.previous_pi_day(Date.today))
|
153
|
+
end
|
154
|
+
|
155
|
+
it "rejects string input" do
|
156
|
+
lambda { Timetress::Norway.previous_pi_day("a string") }.should raise_error(ArgumentError)
|
157
|
+
end
|
158
|
+
|
159
|
+
it "rejects integer input" do
|
160
|
+
lambda { Timetress::Norway.previous_pi_day(1) }.should raise_error(ArgumentError)
|
161
|
+
end
|
134
162
|
end
|
163
|
+
|
135
164
|
end
|
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.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70185762816380 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70185762816380
|
25
25
|
description: Answers the age-old question 'When is mothersday this year?'
|
26
26
|
email:
|
27
27
|
- katrina.owen@gmail.com
|