china_holiday 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []