HappyFriday 0.3.0 → 0.4.1

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.
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.