HappyFriday 0.3.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6dc995fa7776b56cc948825ee7d264abe291a99885adba2381d6db073ab0ba88
4
- data.tar.gz: be8801c411b53e396aa61b91fffe3a0a47a28efb9d5cc1c2d70461b38826ffb2
3
+ metadata.gz: c9357c7d344a25ec5773cfd40a97641602e5d5e33e10435b00b721ce6f2e777e
4
+ data.tar.gz: c0685d10bbfcfa912e6c5621d471060f7cae9efe7eb903943a3c38261c16d6ae
5
5
  SHA512:
6
- metadata.gz: 8999d3265a0bca79b081aaa6f57b1036f99995504085c97081013ad607718a5776426581708bb7a37b870d53bb028289b0a6b13676bc9b74cd22eb56e3edf3f9
7
- data.tar.gz: a5fbc9cee07f9f53148ea1523cc6740312b441ddcebfd906019eb14618a39e1f82fffbf7098188065eaa687bf48cafc304cfad075b701f138ce435091edf2a79
6
+ metadata.gz: 37eb44bf9423090e4399176da90c43be7341b4d5c719b789b316c1d0b3193c98fd8f1fdbc999507468453e4906021b048e053a21a04fa6d6e9534a7c48dfd5af
7
+ data.tar.gz: d4e2d3ef75a298d08e4d5e91ad8a99f542988e64095d7302471dc8c58c1b616238382254ba32ade1f85cd5fdf5dd853823c34c7788b45aaebe9619e37f81fcba
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # HappyFriday
2
2
 
3
- Gem that can determine HappyFriday.
3
+ This gem is capable of obtaining and determining HappyFriday.
4
4
 
5
5
  ## Installation
6
6
 
@@ -15,15 +15,32 @@ If bundler is not being used to manage dependencies, install the gem by executin
15
15
  ## Usage
16
16
 
17
17
  ### HappyFriday decision
18
- true or false returns.
19
18
  ```rb
20
- HappyFriday.happyfriday?(Time.now)
19
+ date = Date.new(2022, 5, 3)
20
+ HappyFriday.happy_friday?(date)
21
+ => false
22
+
23
+ date = Date.new(2022, 5, 27)
24
+ HappyFriday.happy_friday?(date)
25
+ => true
21
26
  ```
22
27
 
23
- ### Getting HappyFriday
28
+ ### Get the next HappyFriday
24
29
  You can get a HappyFriday for that month.
25
30
  ```rb
26
- HappyFriday.get_happy_friday(Time.now)
31
+ date = Date.new(2022, 5)
32
+ HappyFriday.get_next_happy_friday(date)
33
+ => Fri, 27 May 2022
34
+
35
+ # If the last Friday of the month is a holiday, the day before becomes HappyFriday.
36
+ date = Date.new(2022, 4)
37
+ HappyFriday.get_next_happy_friday(date)
38
+ => Thu, 28 Apr 2022
39
+
40
+ # If HappyFriday of that month has passed, get next month.
41
+ date = Date.new(2022, 4, 30)
42
+ HappyFriday.get_next_happy_friday(date)
43
+ => Fri, 27 May 2022
27
44
  ```
28
45
 
29
46
  ## Development
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HappyFriday
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.1"
5
5
  end
data/lib/HappyFriday.rb CHANGED
@@ -7,12 +7,12 @@ require 'holiday_jp'
7
7
  module HappyFriday
8
8
  class Error < StandardError; end
9
9
 
10
- def self.happyfriday?(target_date)
11
- target_date.strftime("%Y%m%d") == HappyFriday.get_happy_friday(target_date)
10
+ def self.happy_friday?(target_date)
11
+ target_date.strftime("%Y%m%d") == HappyFriday.get_next_happy_friday(target_date).strftime("%Y%m%d")
12
12
  end
13
13
 
14
- def self.get_happy_friday(date)
15
- last_of_month = Date.new(date.year, date.month, -1)
14
+ def self.get_next_happy_friday(target_date)
15
+ last_of_month = Date.new(target_date.year, target_date.month, -1)
16
16
 
17
17
  case last_of_month.wday
18
18
  when 0..4
@@ -23,16 +23,27 @@ module HappyFriday
23
23
  raise 'Unpredictable day of the week.'
24
24
  end
25
25
 
26
- last_friday = last_of_month.ago(before_friday_days.days)
26
+ last_friday = last_of_month - before_friday_days.days
27
27
 
28
28
  raise 'err' unless last_friday.wday == 5
29
29
 
30
- # Doesn't work
31
- # while HolidayJp.holiday?(last_friday)
32
- # last_friday = last_friday.ago(1.week)
33
- # end
34
- # return false if last_friday.month != last_of_month.month
30
+ loop do
31
+ if HolidayJp.holiday?(last_friday)
32
+ last_friday -= 1
33
+ else
34
+ break
35
+ end
36
+ end
37
+
38
+ # If HappyFriday of that month has passed, get next month.
39
+ # TODO: refactoring
40
+ if target_date > last_friday
41
+ next_month = last_friday + 1.month
42
+ happy_friday = HappyFriday.get_next_happy_friday(Date.new(next_month.year, next_month.month))
43
+ else
44
+ happy_friday = last_friday
45
+ end
35
46
 
36
- last_friday.strftime("%Y%m%d")
47
+ happy_friday
37
48
  end
38
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: HappyFriday
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - holasoynaoki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-31 00:00:00.000000000 Z
11
+ date: 2022-06-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Determine if today is a HappyFriday.
14
14
  email:
@@ -48,7 +48,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
48
48
  - !ruby/object:Gem::Version
49
49
  version: '0'
50
50
  requirements: []
51
- rubygems_version: 3.2.15
51
+ rubygems_version: 3.2.3
52
52
  signing_key:
53
53
  specification_version: 4
54
54
  summary: Determine if today is a HappyFriday.