fiscal_year 0.4.0 → 0.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1468592d50121d359747c36cc467fac062fd25b0b50344668b612074133527d3
4
- data.tar.gz: b5428700e7f8b6b256e33b854623d1079d5aa3b93ce8a1873a14c6c660b3e1fe
3
+ metadata.gz: '0917960fc403b45d283863bad77ac8e35fc8b5a3c216a13f1ca2cdb68c95410a'
4
+ data.tar.gz: 68506d80a59973356f41d5bd1c55af3164542378ec8d9bea7d31be14bd90e302
5
5
  SHA512:
6
- metadata.gz: 9609eac23bd8fd86a94a7f218d1ed613ac6bc8b0b3f231ebdc0a9f90fe21653170eb996def584b6bd9cf448f9e8f4f8e78c0092fe505c542737cb7c329422711
7
- data.tar.gz: 0b4f5c6f0ad8939f62964b72d0fbf10f7aab52108e9de956888b9f038a997d9f6aa458c63ee4e83990fb767157b61ab0fb2a6401b77bcb821355660c11b1f591
6
+ metadata.gz: 74e0c8c7ddff795d9c64754dde60b462073f45afd04892dcad3e1595970d1bc2a7ac4ebf3bc464ccc112f10bfe33393023bf008cf08b349c27839994a00c4199
7
+ data.tar.gz: 50c1f1e00478c28ee72bc301ab8ab5fe42c1d142e822cc2d8747ff25f631ff62aff2e3e457e8bb852cde09676b38c0826057f8dedd503e5ad8ad2c3ad37a7e90
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.6
2
+ TargetRubyVersion: 3.1
3
3
  Exclude:
4
4
  - 'Steepfile'
5
5
  - 'vendor/**/*'
data/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ ## [0.6.0] - 2024-05-15
2
+ - [BREAK] Ruby 3.0.x, 2.7.x and 2.6.x has no longer support.
3
+ - add `FiscalYear.range_by` method
4
+
5
+ ## [0.5.0] - 2024-03-18
6
+ - [BREAK] rename and move `FiscalYear::Half.normalize_year_by_month` to `FiscalYear.increase_year_by_month`
7
+ - add `FiscalYear.decrease_year_by_month` method
8
+
9
+ when year normalize, we may want to increase year or decrease year depending on the situation.
10
+ therefore, rename and add decrease method.
11
+
1
12
  ## [0.4.0] - 2023-06-15
2
13
  - fix calculate logic of half year to date
3
14
 
@@ -32,7 +32,7 @@ module FiscalYear
32
32
  end_month = first.last
33
33
  raise StandardError if end_month.nil?
34
34
 
35
- end_year = normalize_year_by_month(year, end_month)
35
+ end_year = FiscalYear.increase_year_by_month(year, end_month)
36
36
 
37
37
  Date.parse("#{year}/#{first.first}/01")..Date.parse("#{end_year}/#{end_month}/01").end_of_month
38
38
  end
@@ -45,8 +45,8 @@ module FiscalYear
45
45
  end_month = second.last
46
46
  raise StandardError if first_month.nil? || end_month.nil?
47
47
 
48
- start_year = normalize_year_by_month(year, first_month)
49
- end_year = normalize_year_by_month(year, end_month)
48
+ start_year = FiscalYear.increase_year_by_month(year, first_month)
49
+ end_year = FiscalYear.increase_year_by_month(year, end_month)
50
50
 
51
51
  Date.parse("#{start_year}/#{first_month}/01")..Date.parse("#{end_year}/#{end_month}/01").end_of_month
52
52
  end
@@ -55,19 +55,11 @@ module FiscalYear
55
55
  month = date.month
56
56
  year = date.year
57
57
  # if passed crossed year value, normalize to not crossed year value
58
- year -= 1 if FiscalYear.cross_year_month?(month)
58
+ year = FiscalYear.decrease_year_by_month(year, month)
59
59
 
60
60
  first?(month) ? first_range_by(year) : second_range_by(year)
61
61
  end
62
62
 
63
- def normalize_year_by_month(year, month)
64
- if FiscalYear.cross_year_month?(month)
65
- year + 1
66
- else
67
- year
68
- end
69
- end
70
-
71
63
  def cross_year_in_half?(half)
72
64
  FiscalYear.cross_year? && half.any? { |month| month == 12 }
73
65
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FiscalYear
4
- VERSION = "0.4.0"
4
+ VERSION = "0.6.0"
5
5
  end
@@ -21,16 +21,13 @@ module FiscalYear
21
21
  months = FiscalYear.months[(0..month_index)]
22
22
  raise StandardError if months.nil?
23
23
 
24
- pair = []
25
- [date.year].product(months).each do |e|
26
- pair << if FiscalYear.cross_year_month?(month)
27
- (FiscalYear.cross_year_month?(e.second) ? e : [e.first - 1, e.second])
28
- else
29
- e
30
- end
24
+ [date.year].product(months).map do |e|
25
+ if FiscalYear.cross_year_month?(month)
26
+ (FiscalYear.cross_year_month?(e.second) ? e : [e.first - 1, e.second])
27
+ else
28
+ e
29
+ end
31
30
  end
32
-
33
- pair
34
31
  end
35
32
 
36
33
  # TODO: fit to Abc size
data/lib/fiscal_year.rb CHANGED
@@ -52,5 +52,29 @@ module FiscalYear
52
52
  # @type self: singleton(FiscalYear)
53
53
  months.in_groups(4)
54
54
  end
55
+
56
+ def increase_year_by_month(year, month)
57
+ if FiscalYear.cross_year_month?(month)
58
+ year + 1
59
+ else
60
+ year
61
+ end
62
+ end
63
+
64
+ def decrease_year_by_month(year, month)
65
+ if FiscalYear.cross_year_month?(month)
66
+ year - 1
67
+ else
68
+ year
69
+ end
70
+ end
71
+
72
+ def range_by(date)
73
+ year = date.year
74
+ month = date.month
75
+ normalized_year = decrease_year_by_month(year, month)
76
+
77
+ FiscalYear::Half.first_range_by(normalized_year).first..FiscalYear::Half.second_range_by(normalized_year).last
78
+ end
55
79
  end
56
80
  end
@@ -1,5 +1,6 @@
1
1
  module FiscalYear
2
2
  class Config
3
3
  attr_reader start_month: Integer
4
+ def initialize: -> Integer
4
5
  end
5
6
  end
@@ -7,7 +7,6 @@ module FiscalYear
7
7
  def self.first_range_by: (Integer) -> Range[Date]
8
8
  def self.second_range_by: (Integer) -> Range[Date]
9
9
  def self.range_by: (Date) -> Range[Date]
10
- def self.normalize_year_by_month: (Integer, Integer) -> Integer
11
10
  def self.cross_year_in_half?: (Array[Integer]) -> bool
12
11
  end
13
- end
12
+ end
data/sig/fiscal_year.rbs CHANGED
@@ -10,4 +10,7 @@ module FiscalYear
10
10
  def self.cross_year_months: () -> Array[Integer]
11
11
  def self.halfs: () -> [Array[Integer], Array[Integer]]
12
12
  def self.quarters: () -> [Array[Integer], Array[Integer], Array[Integer], Array[Integer]]
13
+ def self.increase_year_by_month: (Integer, Integer) -> Integer
14
+ def self.decrease_year_by_month: (Integer, Integer) -> Integer
15
+ def self.range_by: (Date) -> Range
13
16
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fiscal_year
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tsubasa Kawajiri
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-15 00:00:00.000000000 Z
11
+ date: 2024-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -70,7 +70,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - ">="
72
72
  - !ruby/object:Gem::Version
73
- version: 2.6.0
73
+ version: 3.1.0
74
74
  required_rubygems_version: !ruby/object:Gem::Requirement
75
75
  requirements:
76
76
  - - ">="