joerichsen-danske_helligdage 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,8 @@
1
+ === 1.0.1 / 2008-10-25
2
+
3
+ * Support for non-official public holidays (juleaftensdag, grundlovsdag and 1. maj)
4
+
1
5
  === 1.0.0 / 2008-10-24
2
6
 
3
- * First release
7
+ * First release
8
+
@@ -2,6 +2,13 @@ History.txt
2
2
  Manifest.txt
3
3
  README.txt
4
4
  Rakefile
5
- bin/danske_helligdage
5
+ danske_helligdage.gemspec
6
6
  lib/danske_helligdage.rb
7
- test/test_danske_helligdage.rb
7
+ lib/danske_helligdage/foerste_maj.rb
8
+ lib/danske_helligdage/grundlovsdag.rb
9
+ lib/danske_helligdage/juleaftensdag.rb
10
+ lib/danske_helligdage/officielle.rb
11
+ test/test_danske_helligdage.rb
12
+ test/test_foerste_maj.rb
13
+ test/test_grundlovsdag.rb
14
+ test/test_juleaftensdag.rb
data/README.txt CHANGED
@@ -29,10 +29,9 @@ Get the number of working days for a given month
29
29
  Date.arbejdsdage(2008, 1) returns 22
30
30
 
31
31
  Or for a specific period
32
- Date.arbejdsdage_i_periode(Date.civil(2008, 1, 1), Date.civil(2008, 12, 31)) returns 252
32
+ Date.arbejdsdage_i_periode(Date.civil(2008, 1, 1), Date.civil(2008, 12, 31)) returns 253
33
33
 
34
- Note that 1. maj, grundlovsdag and juleaftensdag are not official Danish public holidays,
35
- so to enable them you do something like this
34
+ Note that 1. maj, grundlovsdag and juleaftensdag are not official Danish public holidays, so to enable them you do something like this
36
35
  require 'danske_helligdage'
37
36
  require 'danske_helligdage/juleaftensdag'
38
37
 
@@ -44,7 +43,7 @@ Then all of the methods above will take juleaftensdag into consideration.
44
43
 
45
44
  == INSTALL:
46
45
 
47
- * sudo gem install danske_helligdage
46
+ * sudo gem install joerichsen-danske_helligdage
48
47
 
49
48
  == LICENSE:
50
49
 
@@ -0,0 +1,16 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{danske_helligdage}
3
+ s.version = "1.0.1"
4
+ s.authors = ["J\303\270rgen Oreh\303\270j Erichsen"]
5
+ s.date = %q{2008-10-25}
6
+ s.description = %q{Add support for public holidays in Denmark in the Date class}
7
+ s.email = ["joe@erichsen.net"]
8
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
9
+ s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "danske_helligdage.gemspec", "lib/danske_helligdage.rb", "lib/danske_helligdage/foerste_maj.rb", "lib/danske_helligdage/grundlovsdag.rb", "lib/danske_helligdage/juleaftensdag.rb", "lib/danske_helligdage/officielle.rb"]
10
+ s.test_files = ["test/test_danske_helligdage.rb", "test/test_foerste_maj.rb", "test/test_grundlovsdag.rb", "test/test_juleaftensdag.rb"]
11
+ s.has_rdoc = true
12
+ s.homepage = %q{http://github.com/joerichsen/danske_helligdage/}
13
+ s.rdoc_options = ["--main", "README.txt"]
14
+ s.require_paths = ["lib"]
15
+ s.summary = %q{Add support for public holidays in Denmark in the Date class}
16
+ end
@@ -0,0 +1,19 @@
1
+ require 'danske_helligdage'
2
+
3
+ module DanskeHelligdage
4
+ module FoersteMaj
5
+
6
+ def self.included(base)
7
+ base.class_eval do
8
+ alias_method :org_helligdag, :helligdag
9
+ end
10
+ end
11
+
12
+ def helligdag
13
+ (month == 5 && day == 1) ? '1. maj' : org_helligdag
14
+ end
15
+
16
+ end
17
+ end
18
+
19
+ Date.send(:include, DanskeHelligdage::FoersteMaj)
@@ -0,0 +1,19 @@
1
+ require 'danske_helligdage'
2
+
3
+ module DanskeHelligdage
4
+ module Grundlovsdag
5
+
6
+ def self.included(base)
7
+ base.class_eval do
8
+ alias_method :org_helligdag, :helligdag
9
+ end
10
+ end
11
+
12
+ def helligdag
13
+ (month == 6 && day == 5) ? 'Grundlovsdag' : org_helligdag
14
+ end
15
+
16
+ end
17
+ end
18
+
19
+ Date.send(:include, DanskeHelligdage::Grundlovsdag)
@@ -0,0 +1,19 @@
1
+ require 'danske_helligdage'
2
+
3
+ module DanskeHelligdage
4
+ module Juleaftensdag
5
+
6
+ def self.included(base)
7
+ base.class_eval do
8
+ alias_method :org_helligdag, :helligdag
9
+ end
10
+ end
11
+
12
+ def helligdag
13
+ (month == 12 && day == 24) ? 'Juleaftensdag' : org_helligdag
14
+ end
15
+
16
+ end
17
+ end
18
+
19
+ Date.send(:include, DanskeHelligdage::Juleaftensdag)
@@ -0,0 +1,84 @@
1
+ # An extension to the Date class that provides some methods for working with public holidays in Denmark.
2
+ module DanskeHelligdage
3
+
4
+ VERSION = '1.0.0'
5
+
6
+ module Officielle
7
+
8
+ def self.included(base)
9
+ base.extend ClassMethods
10
+ end
11
+
12
+ module ClassMethods
13
+ def arbejdsdage_i_periode(from, to)
14
+ (from..to).to_a.select { |date| date.arbejdsdag? }.length
15
+ end
16
+
17
+ def arbejdsdage(year, month)
18
+ arbejdsdage_i_periode(Date.civil(year, month), (Date.civil(year, month) >> 1) - 1)
19
+ end
20
+ end
21
+
22
+ # Returns true if it is a working day
23
+ def arbejdsdag?
24
+ !weekend? && !helligdag?
25
+ end
26
+
27
+ # Returns true if it is a weekend
28
+ def weekend?
29
+ wday == 0 || wday == 6
30
+ end
31
+
32
+ # Returns true if it is a public holiday
33
+ def helligdag?
34
+ not helligdag.nil?
35
+ end
36
+
37
+ # Returns the name of public holiday
38
+ def helligdag
39
+ paaskedag = easter
40
+
41
+ relative_dates = {
42
+ (paaskedag - 7) => "Palmesøndag",
43
+ (paaskedag - 3) => "Skærtorsdag",
44
+ (paaskedag - 2) => "Langfredag",
45
+ (paaskedag) => "Påskedag",
46
+ (paaskedag + 1) => "2. påskedag",
47
+ (paaskedag + 26) => "Store Bededag",
48
+ (paaskedag + 39) => "Kristi himmelfartsdag",
49
+ (paaskedag + 49) => "Pinsedag",
50
+ (paaskedag + 50) => "2. pinsedag",
51
+ }
52
+
53
+ absolute_dates = {
54
+ Date.new(year, 1, 1) => "Nytårsdag",
55
+ Date.new(year, 12, 25) => "1. juledag",
56
+ Date.new(year, 12, 26) => "2. juledag",
57
+ }
58
+
59
+ (relative_dates.merge(absolute_dates))[self]
60
+ end
61
+
62
+ # Returns a date representing Easter
63
+ #
64
+ # From http://www.dayweekyear.com/faq_holidays_calculation.jsp
65
+ def easter
66
+ y = year
67
+ a = y % 19
68
+ b = y / 100
69
+ c = y % 100
70
+ d = b / 4
71
+ e = b % 4
72
+ f = (b + 8) / 25
73
+ g = (b - f + 1) / 3;
74
+ h = (19 * a + b - d - g + 15) % 30
75
+ i = c / 4
76
+ k = c % 4
77
+ l = (32 + 2 * e + 2 * i - h - k) % 7
78
+ m = (a + 11 * h + 22 * l) / 451
79
+ month = (h + l - 7 * m + 114) / 31
80
+ day = ((h + l - 7 * m + 114) % 31) + 1
81
+ Date.civil(year, month, day)
82
+ end
83
+ end
84
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joerichsen-danske_helligdage
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - "J\xC3\xB8rgen Oreh\xC3\xB8j Erichsen"
@@ -9,18 +9,10 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-24 00:00:00 -07:00
12
+ date: 2008-10-25 00:00:00 -07:00
13
13
  default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: hoe
17
- version_requirement:
18
- version_requirements: !ruby/object:Gem::Requirement
19
- requirements:
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 1.8.1
23
- version:
14
+ dependencies: []
15
+
24
16
  description: Add support for public holidays in Denmark in the Date class
25
17
  email:
26
18
  - joe@erichsen.net
@@ -37,12 +29,12 @@ files:
37
29
  - Manifest.txt
38
30
  - README.txt
39
31
  - Rakefile
40
- - bin/danske_helligdage
32
+ - danske_helligdage.gemspec
41
33
  - lib/danske_helligdage.rb
42
- - test/test_danske_helligdage.rb
43
- - test/test_foerste_maj.rb
44
- - test/test_grundlovsdag.rb
45
- - test/test_juleaftensdag.rb
34
+ - lib/danske_helligdage/foerste_maj.rb
35
+ - lib/danske_helligdage/grundlovsdag.rb
36
+ - lib/danske_helligdage/juleaftensdag.rb
37
+ - lib/danske_helligdage/officielle.rb
46
38
  has_rdoc: true
47
39
  homepage: http://github.com/joerichsen/danske_helligdage/
48
40
  post_install_message:
@@ -65,10 +57,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
57
  version:
66
58
  requirements: []
67
59
 
68
- rubyforge_project: danskehelligdage
60
+ rubyforge_project:
69
61
  rubygems_version: 1.2.0
70
62
  signing_key:
71
63
  specification_version: 2
72
64
  summary: Add support for public holidays in Denmark in the Date class
73
65
  test_files:
74
66
  - test/test_danske_helligdage.rb
67
+ - test/test_foerste_maj.rb
68
+ - test/test_grundlovsdag.rb
69
+ - test/test_juleaftensdag.rb