uk_working_days 0.1.0
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/.document +5 -0
- data/.gitignore +21 -0
- data/LICENSE +20 -0
- data/README.rdoc +40 -0
- data/Rakefile +54 -0
- data/VERSION +1 -0
- data/lib/uk_working_days/date_extensions.rb +100 -0
- data/lib/uk_working_days/easter.rb +43 -0
- data/lib/uk_working_days.rb +14 -0
- data/test/helper.rb +10 -0
- data/test/test_easter.rb +7 -0
- data/test/test_uk_working_days.rb +158 -0
- metadata +99 -0
data/.document
ADDED
data/.gitignore
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2010 Notonthehighstreet Enterprises Ltd
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
= UK Working Days
|
2
|
+
|
3
|
+
Provides mixins to the Date, Time and DateTime clasess to provide functionality around UK working days / public holidays.
|
4
|
+
|
5
|
+
== Basic Usage
|
6
|
+
|
7
|
+
If Easter monday is on the 5th April 2010:
|
8
|
+
|
9
|
+
Date.new(2010, 4, 5).public_holiday? # => true
|
10
|
+
Date.new(2010, 4, 5).working_day? # => false
|
11
|
+
Date.new(2010, 4, 5).weekday? # => true
|
12
|
+
Date.new(2010, 4, 5) == Date.easter_monday(2010) # => true
|
13
|
+
Date.public_holidays(2010).include?( Date.new(2010, 4, 5) ) # => true
|
14
|
+
|
15
|
+
Will return DateTimes or Times instead as appropriate. See rdoc for more information.
|
16
|
+
|
17
|
+
== Dependencies
|
18
|
+
|
19
|
+
* ActiveSupport
|
20
|
+
|
21
|
+
== Authors
|
22
|
+
|
23
|
+
* Gregory Becker
|
24
|
+
* Joe Simms
|
25
|
+
* Roland Swingler
|
26
|
+
* Jonathan Viney
|
27
|
+
|
28
|
+
== Note on Patches/Pull Requests
|
29
|
+
|
30
|
+
* Fork the project.
|
31
|
+
* Make your feature addition or bug fix.
|
32
|
+
* Add tests for it. This is important so I don't break it in a
|
33
|
+
future version unintentionally.
|
34
|
+
* Commit, do not mess with rakefile, version, or history.
|
35
|
+
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
36
|
+
* Send me a pull request. Bonus points for topic branches.
|
37
|
+
|
38
|
+
== Copyright
|
39
|
+
|
40
|
+
Copyright (c) 2010 Notonthehighstreet Enterprises Ltd. See LICENSE for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "uk_working_days"
|
8
|
+
gem.summary = %Q{Provide date helpers for UK working days}
|
9
|
+
gem.description = %Q{Provide date helpers for UK working days}
|
10
|
+
gem.email = "roland.swingler@gmail.com"
|
11
|
+
gem.homepage = "http://github.com/knaveofdiamonds/uk_working_days"
|
12
|
+
gem.authors = ["Roland Swingler"]
|
13
|
+
gem.add_dependency "activesupport", ">= 2"
|
14
|
+
gem.add_development_dependency "shoulda", ">= 0"
|
15
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
|
+
end
|
17
|
+
Jeweler::GemcutterTasks.new
|
18
|
+
rescue LoadError
|
19
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
20
|
+
end
|
21
|
+
|
22
|
+
require 'rake/testtask'
|
23
|
+
Rake::TestTask.new(:test) do |test|
|
24
|
+
test.libs << 'lib' << 'test'
|
25
|
+
test.pattern = 'test/**/test_*.rb'
|
26
|
+
test.verbose = true
|
27
|
+
end
|
28
|
+
|
29
|
+
begin
|
30
|
+
require 'rcov/rcovtask'
|
31
|
+
Rcov::RcovTask.new do |test|
|
32
|
+
test.libs << 'test'
|
33
|
+
test.pattern = 'test/**/test_*.rb'
|
34
|
+
test.verbose = true
|
35
|
+
end
|
36
|
+
rescue LoadError
|
37
|
+
task :rcov do
|
38
|
+
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
task :test => :check_dependencies
|
43
|
+
|
44
|
+
task :default => :test
|
45
|
+
|
46
|
+
require 'rake/rdoctask'
|
47
|
+
Rake::RDocTask.new do |rdoc|
|
48
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
49
|
+
|
50
|
+
rdoc.rdoc_dir = 'rdoc'
|
51
|
+
rdoc.title = "uk_working_days #{version}"
|
52
|
+
rdoc.rdoc_files.include('README*')
|
53
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
54
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
@@ -0,0 +1,100 @@
|
|
1
|
+
module UkWorkingDays
|
2
|
+
# Extensions to the Date and DateTime classes
|
3
|
+
module DateExtensions
|
4
|
+
# Returns true if this day is in the week
|
5
|
+
def weekday?
|
6
|
+
! weekend?
|
7
|
+
end
|
8
|
+
|
9
|
+
# Returns true if this day is on the weekend
|
10
|
+
def weekend?
|
11
|
+
wday == 0 || wday == 6
|
12
|
+
end
|
13
|
+
|
14
|
+
# Returns true if this day is a bank holiday
|
15
|
+
def public_holiday?
|
16
|
+
Date.public_holidays(year).include?(to_date)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns true if this day is a normal weekday
|
20
|
+
def working_day?
|
21
|
+
weekday? && ! public_holiday?
|
22
|
+
end
|
23
|
+
|
24
|
+
# Returns the next (or count'th) working day
|
25
|
+
def next_working_day(count = 1)
|
26
|
+
negative = count < 0
|
27
|
+
count = count.abs
|
28
|
+
date = negative ? yesterday : tomorrow
|
29
|
+
|
30
|
+
loop do
|
31
|
+
count -= 1 if date.working_day?
|
32
|
+
return date if count.zero?
|
33
|
+
|
34
|
+
date += negative ? -1 : 1
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# The previous (or count'th) working day
|
39
|
+
def previous_working_day(count = 1)
|
40
|
+
next_working_day(-count)
|
41
|
+
end
|
42
|
+
|
43
|
+
module ClassMethods
|
44
|
+
# New year's day, or the next weekday following if on a weekend
|
45
|
+
def new_years_day_holiday(year)
|
46
|
+
nyd = new(year, 1, 1)
|
47
|
+
nyd.weekday?() ? nyd : nyd.next_week
|
48
|
+
end
|
49
|
+
|
50
|
+
# Christmas day, or the next weekday following if on a weekend
|
51
|
+
def christmas_day_holiday(year)
|
52
|
+
xmas_day = new(year, 12, 25)
|
53
|
+
xmas_day.weekday? ? xmas_day : xmas_day.next_week
|
54
|
+
end
|
55
|
+
|
56
|
+
# Boxing day, or the next working day following
|
57
|
+
def boxing_day_holiday(year)
|
58
|
+
([0,5,6].include? christmas_day_holiday(year).wday) ? christmas_day_holiday(year).next_week : christmas_day_holiday(year).tomorrow
|
59
|
+
end
|
60
|
+
|
61
|
+
# The monday after Easter Sunday
|
62
|
+
def easter_monday(year)
|
63
|
+
easter(year) + 1
|
64
|
+
end
|
65
|
+
|
66
|
+
# The friday before Easter Sunday
|
67
|
+
def good_friday(year)
|
68
|
+
easter(year) - 2
|
69
|
+
end
|
70
|
+
|
71
|
+
# The first monday in May
|
72
|
+
def may_bank_holiday(year)
|
73
|
+
first_day_may = new(year, 5, 1)
|
74
|
+
first_day_may.wday == 1 ? first_day_may : first_day_may.next_week
|
75
|
+
end
|
76
|
+
|
77
|
+
# The last monday in May
|
78
|
+
def spring_bank_holiday(year)
|
79
|
+
new(year, 5, 31).beginning_of_week
|
80
|
+
end
|
81
|
+
|
82
|
+
# The last monday in August
|
83
|
+
def summer_bank_holiday(year)
|
84
|
+
new(year, 8, 31).beginning_of_week
|
85
|
+
end
|
86
|
+
|
87
|
+
# An Array of all public holidays for the given year
|
88
|
+
def public_holidays(year)
|
89
|
+
[new_years_day_holiday(year),
|
90
|
+
good_friday(year),
|
91
|
+
easter_monday(year),
|
92
|
+
may_bank_holiday(year),
|
93
|
+
spring_bank_holiday(year),
|
94
|
+
summer_bank_holiday(year),
|
95
|
+
christmas_day_holiday(year),
|
96
|
+
boxing_day_holiday(year)]
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# The easter calculation is largely derived from
|
2
|
+
# reusablecode.blogspot.com under the following license
|
3
|
+
#
|
4
|
+
# Copyright (c) 2008, reusablecode.blogspot.com; some rights reserved.
|
5
|
+
#
|
6
|
+
# This work is licensed under the Creative Commons Attribution License. To view
|
7
|
+
# a copy of this license, visit http://creativecommons.org/licenses/by/3.0/ or
|
8
|
+
# send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California
|
9
|
+
# 94305, USA.
|
10
|
+
#
|
11
|
+
|
12
|
+
module UkWorkingDays
|
13
|
+
module Easter
|
14
|
+
# Calculate easter sunday for the given year
|
15
|
+
def easter(year)
|
16
|
+
golden_number = (year % 19) + 1
|
17
|
+
|
18
|
+
if year <= 1752 then
|
19
|
+
# Julian calendar
|
20
|
+
dominical_number = (year + (year / 4) + 5) % 7
|
21
|
+
paschal_full_moon = (3 - (11 * golden_number) - 7) % 30
|
22
|
+
else
|
23
|
+
# Gregorian calendar
|
24
|
+
dominical_number = (year + (year / 4) - (year / 100) + (year / 400)) % 7
|
25
|
+
solar_correction = (year - 1600) / 100 - (year - 1600) / 400
|
26
|
+
lunar_correction = (((year - 1400) / 100) * 8) / 25
|
27
|
+
paschal_full_moon = (3 - 11 * golden_number + solar_correction - lunar_correction) % 30
|
28
|
+
end
|
29
|
+
|
30
|
+
dominical_number += 7 until dominical_number > 0
|
31
|
+
|
32
|
+
paschal_full_moon += 30 until paschal_full_moon > 0
|
33
|
+
paschal_full_moon -= 1 if paschal_full_moon == 29 or (paschal_full_moon == 28 and golden_number > 11)
|
34
|
+
|
35
|
+
difference = (4 - paschal_full_moon - dominical_number) % 7
|
36
|
+
difference += 7 if difference < 0
|
37
|
+
|
38
|
+
day_easter = paschal_full_moon + difference + 1
|
39
|
+
|
40
|
+
day_easter < 11 ? new(year, 3, day_easter + 21) : new(year, 4, day_easter - 10)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'date'
|
2
|
+
require 'activesupport'
|
3
|
+
require File.dirname(__FILE__) + '/uk_working_days/easter'
|
4
|
+
require File.dirname(__FILE__) + '/uk_working_days/date_extensions'
|
5
|
+
|
6
|
+
class Date #:nodoc:
|
7
|
+
extend UkWorkingDays::Easter
|
8
|
+
extend UkWorkingDays::DateExtensions::ClassMethods
|
9
|
+
include UkWorkingDays::DateExtensions
|
10
|
+
end
|
11
|
+
|
12
|
+
class Time #:nodoc:
|
13
|
+
include UkWorkingDays::DateExtensions
|
14
|
+
end
|
data/test/helper.rb
ADDED
data/test/test_easter.rb
ADDED
@@ -0,0 +1,158 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestUkWorkingDays < Test::Unit::TestCase
|
4
|
+
should "return true for #weekend? if day is a Saturday or Sunday" do
|
5
|
+
assert Date.new(2010, 2, 27).weekend?
|
6
|
+
assert Date.new(2010, 2, 28).weekend?
|
7
|
+
assert Time.local(2010, 2, 28).weekend?
|
8
|
+
end
|
9
|
+
|
10
|
+
should "return true for #weekday? if day is not on the Weekend" do
|
11
|
+
assert Date.new(2010, 2, 26).weekday?
|
12
|
+
assert Time.local(2010, 2, 26).weekday?
|
13
|
+
end
|
14
|
+
|
15
|
+
should "return true for #public_holiday? if day is a public holiday" do
|
16
|
+
assert Date.new(2010, 4, 5).public_holiday?
|
17
|
+
assert DateTime.new(2010, 4, 5).public_holiday?
|
18
|
+
assert Time.local(2010, 4, 5).public_holiday?
|
19
|
+
end
|
20
|
+
|
21
|
+
should "return false for #public_holiday? if day not a public holiday" do
|
22
|
+
assert ! Date.new(2010, 4, 6).public_holiday?
|
23
|
+
assert ! DateTime.new(2010, 4, 6).public_holiday?
|
24
|
+
end
|
25
|
+
|
26
|
+
should "return true for #working_day? on a normal weekday" do
|
27
|
+
assert Date.new(2010, 4, 1).working_day?
|
28
|
+
assert Time.local(2010, 4, 1).working_day?
|
29
|
+
end
|
30
|
+
|
31
|
+
should "return false for #working_day? if day is a public holiday or on the weekend" do
|
32
|
+
assert ! Date.new(2010, 4, 5).working_day?
|
33
|
+
assert ! Date.new(2010, 4, 4).working_day?
|
34
|
+
assert ! Time.local(2010, 4, 4).working_day?
|
35
|
+
end
|
36
|
+
|
37
|
+
should "return the next working day for #next_working_day" do
|
38
|
+
assert_equal Date.new(2010, 4, 6), Date.new(2010, 4, 2).next_working_day
|
39
|
+
assert_equal Date.new(2010, 4, 7), Date.new(2010, 4, 6).next_working_day
|
40
|
+
assert_equal Time.local(2010, 4, 7), Time.local(2010, 4, 6).next_working_day
|
41
|
+
end
|
42
|
+
|
43
|
+
should "return the previous working day for #previous_working_day" do
|
44
|
+
assert_equal Date.new(2010, 4, 1), Date.new(2010, 4, 6).previous_working_day
|
45
|
+
assert_equal Date.new(2010, 3, 31), Date.new(2010, 4, 1).previous_working_day
|
46
|
+
assert_equal Time.local(2010, 3, 31), Time.local(2010, 4, 1).previous_working_day
|
47
|
+
end
|
48
|
+
|
49
|
+
context "Date#new_years_day_holiday" do
|
50
|
+
should "return new year's day if it is a weekday" do
|
51
|
+
assert_equal Date.new(2010, 1, 1), Date.new_years_day_holiday(2010)
|
52
|
+
end
|
53
|
+
|
54
|
+
should "return the next monday after new year's day if on a weekend" do
|
55
|
+
assert_equal Date.new(2011, 1, 3), Date.new_years_day_holiday(2011)
|
56
|
+
end
|
57
|
+
|
58
|
+
should "return a DateTime if called from DateTime" do
|
59
|
+
assert_kind_of DateTime, DateTime.new_years_day_holiday(2011)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context "Date#christmas_day_holiday" do
|
64
|
+
should "return christmas day if it is a weekday" do
|
65
|
+
assert_equal Date.new(2009, 12, 25), Date.christmas_day_holiday(2009)
|
66
|
+
end
|
67
|
+
|
68
|
+
should "return the next monday after new year's day if on a weekend" do
|
69
|
+
assert_equal Date.new(2010, 12, 27), Date.christmas_day_holiday(2010)
|
70
|
+
end
|
71
|
+
|
72
|
+
should "return a DateTime if called from DateTime" do
|
73
|
+
assert_kind_of DateTime, DateTime.christmas_day_holiday(2010)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context "Date#boxing_day_holiday" do
|
78
|
+
should "return following monday if boxing day is on saturday" do
|
79
|
+
assert_equal Date.new(2009, 12, 28), Date.boxing_day_holiday(2009)
|
80
|
+
end
|
81
|
+
|
82
|
+
should "return the following tuesday if boxing day is on sunday" do
|
83
|
+
assert_equal Date.new(2010, 12, 28), Date.boxing_day_holiday(2010)
|
84
|
+
end
|
85
|
+
|
86
|
+
should "return the following tuesday if boxing day is on monday" do
|
87
|
+
assert_equal Date.new(2011, 12, 27), Date.boxing_day_holiday(2011)
|
88
|
+
end
|
89
|
+
|
90
|
+
should "return boxing day itself in other cases" do
|
91
|
+
assert_equal Date.new(2008, 12, 26), Date.boxing_day_holiday(2008)
|
92
|
+
end
|
93
|
+
|
94
|
+
should "return a DateTime if called from DateTime" do
|
95
|
+
assert_kind_of DateTime, DateTime.boxing_day_holiday(2010)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
context "Date#easter_monday" do
|
100
|
+
should "return the monday after easter" do
|
101
|
+
assert_equal Date.new(2010, 4, 5), Date.easter_monday(2010)
|
102
|
+
end
|
103
|
+
|
104
|
+
should "return a DateTime if called from DateTime" do
|
105
|
+
assert_kind_of DateTime, DateTime.easter_monday(2010)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context "Date#good_friday" do
|
110
|
+
should "return the friday before easter sunday" do
|
111
|
+
assert_equal Date.new(2010, 4, 2), Date.good_friday(2010)
|
112
|
+
end
|
113
|
+
|
114
|
+
should "return a DateTime if called from DateTime" do
|
115
|
+
assert_kind_of DateTime, DateTime.good_friday(2010)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
context "Date#may_bank_holiday" do
|
120
|
+
should "return the first monday in may" do
|
121
|
+
assert_equal Date.new(2010, 5, 3), Date.may_bank_holiday(2010)
|
122
|
+
end
|
123
|
+
|
124
|
+
should "return a DateTime if called from DateTime" do
|
125
|
+
assert_kind_of DateTime, DateTime.may_bank_holiday(2010)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
context "Date#spring_bank_holiday" do
|
130
|
+
should "return the last monday in may" do
|
131
|
+
assert_equal Date.new(2010, 5, 31), Date.spring_bank_holiday(2010)
|
132
|
+
end
|
133
|
+
|
134
|
+
should "return a DateTime if called from DateTime" do
|
135
|
+
assert_kind_of DateTime, DateTime.spring_bank_holiday(2010)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
context "Date#summer_bank_holiday" do
|
140
|
+
should "return the last monday in august" do
|
141
|
+
assert_equal Date.new(2010, 8, 30), Date.summer_bank_holiday(2010)
|
142
|
+
end
|
143
|
+
|
144
|
+
should "return a DateTime if called from DateTime" do
|
145
|
+
assert_kind_of DateTime, DateTime.summer_bank_holiday(2010)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
context "Date#public_holidays" do
|
150
|
+
should "return the eight public holidays in the year" do
|
151
|
+
assert_equal 8, Date.public_holidays(2010).uniq.size
|
152
|
+
end
|
153
|
+
|
154
|
+
should "return datetimes if called from DateTime" do
|
155
|
+
assert DateTime.public_holidays(2010).all? {|d| d.kind_of? DateTime }
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
metadata
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: uk_working_days
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Roland Swingler
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-03-05 00:00:00 +00:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: activesupport
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 2
|
29
|
+
version: "2"
|
30
|
+
type: :runtime
|
31
|
+
version_requirements: *id001
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: shoulda
|
34
|
+
prerelease: false
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
segments:
|
40
|
+
- 0
|
41
|
+
version: "0"
|
42
|
+
type: :development
|
43
|
+
version_requirements: *id002
|
44
|
+
description: Provide date helpers for UK working days
|
45
|
+
email: roland.swingler@gmail.com
|
46
|
+
executables: []
|
47
|
+
|
48
|
+
extensions: []
|
49
|
+
|
50
|
+
extra_rdoc_files:
|
51
|
+
- LICENSE
|
52
|
+
- README.rdoc
|
53
|
+
files:
|
54
|
+
- .document
|
55
|
+
- .gitignore
|
56
|
+
- LICENSE
|
57
|
+
- README.rdoc
|
58
|
+
- Rakefile
|
59
|
+
- VERSION
|
60
|
+
- lib/uk_working_days.rb
|
61
|
+
- lib/uk_working_days/date_extensions.rb
|
62
|
+
- lib/uk_working_days/easter.rb
|
63
|
+
- test/helper.rb
|
64
|
+
- test/test_easter.rb
|
65
|
+
- test/test_uk_working_days.rb
|
66
|
+
has_rdoc: true
|
67
|
+
homepage: http://github.com/knaveofdiamonds/uk_working_days
|
68
|
+
licenses: []
|
69
|
+
|
70
|
+
post_install_message:
|
71
|
+
rdoc_options:
|
72
|
+
- --charset=UTF-8
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
segments:
|
80
|
+
- 0
|
81
|
+
version: "0"
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
segments:
|
87
|
+
- 0
|
88
|
+
version: "0"
|
89
|
+
requirements: []
|
90
|
+
|
91
|
+
rubyforge_project:
|
92
|
+
rubygems_version: 1.3.6
|
93
|
+
signing_key:
|
94
|
+
specification_version: 3
|
95
|
+
summary: Provide date helpers for UK working days
|
96
|
+
test_files:
|
97
|
+
- test/helper.rb
|
98
|
+
- test/test_easter.rb
|
99
|
+
- test/test_uk_working_days.rb
|