china_holiday 1.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4e9fbd722081c458f6083eb1891deacc9a637bfd
4
+ data.tar.gz: 6920f6920a928b0cb0d23051200d18b4f1912326
5
+ SHA512:
6
+ metadata.gz: e039cabce34d38783a01ec3503dbe5d803b5ca31e0c04a21a23d88a6000cf988668249834ada80c7dd72de7e97b224443a4e151b8cc677d9bea49ef65051cbe3
7
+ data.tar.gz: 5322968f24700256ab144552ca755755b46fc2bf7f40a389cbe9b44e0add77ea6e2e848fb46fb91d3b735a04688f6944a3ce109e62886ee899e2071aa1b34d9b
@@ -0,0 +1,20 @@
1
+ 2015-01-01: 2
2
+ 2015-02-18: 2
3
+ 2015-02-19: 2
4
+ 2015-02-20: 2
5
+ 2015-04-05: 2
6
+ 2015-05-01: 2
7
+ 2015-06-20: 2
8
+ 2015-09-03: 2
9
+ 2015-09-27: 2
10
+ 2015-10-01: 2
11
+ 2016-01-01: 2
12
+ 2016-02-08: 2
13
+ 2016-02-09: 2
14
+ 2016-02-10: 2
15
+ 2016-05-01: 2
16
+ 2016-05-02: 2
17
+ 2016-05-03: 2
18
+ 2016-10-01: 2
19
+ 2016-10-02: 2
20
+ 2016-10-03: 2
@@ -0,0 +1,35 @@
1
+ require 'date'
2
+ require 'yaml'
3
+
4
+ class ChinaHoliday
5
+ def self.weekend?(date)
6
+ date.cwday == 6 || date.cwday == 7
7
+ end
8
+ #weekend or holiday
9
+ def self.holiday?(date)
10
+ yaml = YAML.load_file(File.expand_path('../../holidays.yml', __FILE__))
11
+ self.weekend?(date) || yaml.keys.include?(date)
12
+ end
13
+
14
+ #last work day previous given self
15
+ def self.last_work_day(date)
16
+ wday = date.cwday
17
+ friday = date.friday? ? date : date+(5-wday)
18
+
19
+ return self.last_day(friday)
20
+ end
21
+
22
+ def self.last_work_day?(date)
23
+ #code
24
+ last_work_self = self.last_work_day(date)
25
+ last_work_self == date ? true : false
26
+ end
27
+
28
+ def self.last_day(date)
29
+ if self.holiday?(date)
30
+ self.last_day(date-1)
31
+ else
32
+ return date
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,26 @@
1
+ require "minitest/autorun"
2
+ require '../lib/china_holiday.rb'
3
+
4
+ class HolidayTest < Minitest::Test
5
+
6
+ def test_weekend
7
+ week_end = Date.parse('2015-12-19')
8
+ assert_equal true, ChinaHoliday.weekend?(week_end)
9
+ end
10
+
11
+ def test_not_weekend
12
+ not_week_end = Date.parse('2015-12-21')
13
+ assert_equal false, ChinaHoliday.weekend?(not_week_end)
14
+ end
15
+
16
+ def test_holiday
17
+ holiday = Date.parse('2016-1-1')
18
+ assert_equal true, ChinaHoliday.holiday?(holiday)
19
+ end
20
+
21
+ def test_not_holiday
22
+ not_holiday = Date.parse('2016-1-4')
23
+ assert_equal false, ChinaHoliday.holiday?(not_holiday)
24
+ end
25
+
26
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: china_holiday
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Dennis Hu
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-29 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Gem for display holidays in China between 2012 to 2016
14
+ email: pengxing.hu@qq.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - holidays.yml
20
+ - lib/china_holiday.rb
21
+ - test/holiday_test.rb
22
+ homepage: http://rubygems.org/gems/china_holiday
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.4.5
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: China holidays
46
+ test_files: []