fiscal_year 0.6.0 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0917960fc403b45d283863bad77ac8e35fc8b5a3c216a13f1ca2cdb68c95410a'
4
- data.tar.gz: 68506d80a59973356f41d5bd1c55af3164542378ec8d9bea7d31be14bd90e302
3
+ metadata.gz: a66a9750908c6de12be50a3ddac4da7070d3e7b43898151ada109d586e26d983
4
+ data.tar.gz: 407e156b9e5e8f154c68059a652b62cb0016c8aa901b69686c6d8046aa599a6b
5
5
  SHA512:
6
- metadata.gz: 74e0c8c7ddff795d9c64754dde60b462073f45afd04892dcad3e1595970d1bc2a7ac4ebf3bc464ccc112f10bfe33393023bf008cf08b349c27839994a00c4199
7
- data.tar.gz: 50c1f1e00478c28ee72bc301ab8ab5fe42c1d142e822cc2d8747ff25f631ff62aff2e3e457e8bb852cde09676b38c0826057f8dedd503e5ad8ad2c3ad37a7e90
6
+ metadata.gz: 89fe574b9f0e5cd38a7b2add1caf81d1fdfec9fcf4a321da81aa11ffba72e25df925a343ba20703b66cece55407e40da6b30b101baa9e4e9e543836d71db6ab1
7
+ data.tar.gz: 4a67105553886931e1868e47b724b5dc983f507961625a7fb498d45697342ba1fe91aa951320faabf6e1c10c8a0bc47dd856b89675b0f06804077553b1f4f4e8
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [1.0.0] - 2024-07-24
2
+ celebrate 1.0.0 release!! 🎉
3
+ No Breaking Changes, Some futures.
4
+
5
+ - add `passed_month_count_by` and `passed_month_count_by_month` to each FiscalYear, Half, Quarter.
6
+ - fix wrong example comment on `FiscalYear::YearToDate.quarter_range_by`.
7
+ - robust `Config.start_month`. you can no longer pass invalid month. now only pass number 1-12, or short symbol like `:jan`, `:dec`.
8
+
9
+ Thank you for gave me courage to release, ruby-jp!
10
+
11
+ ## [0.7.0] - 2024-07-11
12
+ - add YARD comment.
13
+ - fix `FiscalYear::YearToDate.quarter_range_by` logic.
14
+
1
15
  ## [0.6.0] - 2024-05-15
2
16
  - [BREAK] Ruby 3.0.x, 2.7.x and 2.6.x has no longer support.
3
17
  - add `FiscalYear.range_by` method
@@ -1,11 +1,52 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "fiscal_year/invalid_start_month_error"
4
+
3
5
  module FiscalYear
4
6
  class Config
5
- attr_accessor :start_month
7
+ attr_reader :start_month
8
+
9
+ VALID_START_MONTHS = {
10
+ jan: 1,
11
+ feb: 2,
12
+ mar: 3,
13
+ apr: 4,
14
+ may: 5,
15
+ jun: 6,
16
+ jul: 7,
17
+ aug: 8,
18
+ sep: 9,
19
+ oct: 10,
20
+ nov: 11,
21
+ dec: 12
22
+ }.freeze
6
23
 
7
24
  def initialize
8
25
  @start_month = 4
9
26
  end
27
+
28
+ def start_month=(month)
29
+ valid_start_month?(month)
30
+
31
+ @start_month = fetch_start_month(month)
32
+ end
33
+
34
+ private
35
+
36
+ def valid_start_month?(month)
37
+ if month.is_a? Integer
38
+ VALID_START_MONTHS.values.include?(month)
39
+ else
40
+ VALID_START_MONTHS.keys.include?(month)
41
+ end || raise(InvalidStartMonthError)
42
+ end
43
+
44
+ def fetch_start_month(month)
45
+ if month.is_a? Integer
46
+ VALID_START_MONTHS.rassoc(month)&.last
47
+ else
48
+ VALID_START_MONTHS.assoc(month)&.last
49
+ end || raise(StandardError)
50
+ end
10
51
  end
11
52
  end
@@ -3,47 +3,55 @@
3
3
  module FiscalYear
4
4
  class Half
5
5
  class << self
6
+ # @return [Array<Integer>] the first half of the fiscal year.
6
7
  def first
7
- first = FiscalYear.halfs.first
8
- return first if first.is_a? Array
9
-
10
- []
8
+ FiscalYear.halfs.first || raise(StandardError)
11
9
  end
12
10
 
11
+ # @return [Array<Integer>] the second half of the fiscal year.
13
12
  def second
14
- second = FiscalYear.halfs.second
15
- return second if second.is_a? Array
16
-
17
- []
13
+ FiscalYear.halfs.second || raise(StandardError)
18
14
  end
19
15
 
16
+ # @param month [Integer] the month
17
+ # @return [Boolean] true if the month is in the first half of the fiscal year.
20
18
  def first?(month)
21
19
  FiscalYear.halfs.first.include?(month)
22
20
  end
23
21
 
22
+ # @param month [Integer] the month
23
+ # @return [Boolean] true if the month is in the second half of the fiscal year.
24
24
  def second?(month)
25
25
  !first?(month)
26
26
  end
27
27
 
28
+ # @param month [Integer] the month
29
+ # @return [Array<Integer>] the half months by the month.
30
+ def months(month)
31
+ first?(month) ? first : second
32
+ end
33
+
34
+ # @param year [Integer] the calendar year
35
+ # @return [Range<Date>] the range of the first half of the fiscal year.
28
36
  def first_range_by(year)
29
37
  # care Date#parse 2 digit year auto complete.
30
38
  # 99 + 1 = 100, but expect 2000 this context.
31
39
  year = 1999 if year == 99
32
- end_month = first.last
33
- raise StandardError if end_month.nil?
40
+ end_month = first.last || raise(StandardError)
34
41
 
35
42
  end_year = FiscalYear.increase_year_by_month(year, end_month)
36
43
 
37
44
  Date.parse("#{year}/#{first.first}/01")..Date.parse("#{end_year}/#{end_month}/01").end_of_month
38
45
  end
39
46
 
47
+ # @param year [Integer] the calendar year
48
+ # @return [Range<Date>] the range of the second half of the fiscal year.
40
49
  def second_range_by(year)
41
50
  # care Date#parse 2 digit year auto complete.
42
51
  # 99 + 1 = 100, but expect 2000 this context.
43
52
  year = 1999 if year == 99
44
- first_month = second.first
45
- end_month = second.last
46
- raise StandardError if first_month.nil? || end_month.nil?
53
+ first_month = second.first || raise(StandardError)
54
+ end_month = second.last || raise(StandardError)
47
55
 
48
56
  start_year = FiscalYear.increase_year_by_month(year, first_month)
49
57
  end_year = FiscalYear.increase_year_by_month(year, end_month)
@@ -51,6 +59,8 @@ module FiscalYear
51
59
  Date.parse("#{start_year}/#{first_month}/01")..Date.parse("#{end_year}/#{end_month}/01").end_of_month
52
60
  end
53
61
 
62
+ # @param date [Date] the date
63
+ # @return [Range<Date>] the range of the half of the fiscal year by the date.
54
64
  def range_by(date)
55
65
  month = date.month
56
66
  year = date.year
@@ -60,9 +70,29 @@ module FiscalYear
60
70
  first?(month) ? first_range_by(year) : second_range_by(year)
61
71
  end
62
72
 
73
+ # @param half [Array<Integer>] the half of the fiscal year
74
+ # @return [Boolean] true if the any month of half are crossed calendar year.
63
75
  def cross_year_in_half?(half)
64
76
  FiscalYear.cross_year? && half.any? { |month| month == 12 }
65
77
  end
78
+
79
+ # start by 0.
80
+ #
81
+ # @see passed_month_count_by_month
82
+ # @param date [Date] the date
83
+ # @return [Integer] the passed month count from the beginning of the half.
84
+ def passed_month_count_by(date)
85
+ passed_month_count_by_month(date.month)
86
+ end
87
+
88
+ # start by 0.
89
+ #
90
+ # @see passed_month_count_by_month
91
+ # @param date [Date] the date
92
+ # @return [Integer] the passed month count from the beginning of the half.
93
+ def passed_month_count_by_month(month)
94
+ months(month).find_index(month) || raise(StandardError)
95
+ end
66
96
  end
67
97
  end
68
98
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FiscalYear
4
+ class InvalidStartMonthError < StandardError
5
+ def message
6
+ "Invalid start month. please set 1-12 or :jan, :feb, :mar, :apr, :may, :jun, :jul, :aug, :sep, :oct, :nov, :dec."
7
+ end
8
+ end
9
+ end
@@ -3,35 +3,55 @@
3
3
  module FiscalYear
4
4
  class Quarter
5
5
  class << self
6
+ # @!method first
7
+ # @return [Array<Integer>] the first quarter of the fiscal year.
8
+
9
+ # @!method second
10
+ # @return [Array<Integer>] the second quarter of the fiscal year.
11
+
12
+ # @!method third
13
+ # @return [Array<Integer>] the third quarter of the fiscal year.
14
+
15
+ # @!method fourth
16
+ # @return [Array<Integer>] the fourth quarter of the fiscal year.
6
17
  %i[first second third fourth].each do |method_name|
7
18
  define_method(method_name) do
8
19
  FiscalYear.quarters.public_send(method_name)
9
20
  end
10
21
  end
11
22
 
23
+ # @param month [Integer] the month
24
+ # @return [Boolean] true if the month is in the first quarter of the fiscal year.
12
25
  def first?(month)
13
26
  FiscalYear.quarters.first.include?(month)
14
27
  end
15
28
 
29
+ # @param month [Integer] the month
30
+ # @return [Boolean] true if the month is in the second quarter of the fiscal year.
16
31
  def second?(month)
17
32
  FiscalYear.quarters.second.include?(month)
18
33
  end
19
34
 
35
+ # @param month [Integer] the month
36
+ # @return [Boolean] true if the month is in the third quarter of the fiscal year.
20
37
  def third?(month)
21
38
  FiscalYear.quarters.third.include?(month)
22
39
  end
23
40
 
41
+ # @param month [Integer] the month
42
+ # @return [Boolean] true if the month is in the fourth quarter of the fiscal year.
24
43
  def fourth?(month)
25
44
  FiscalYear.quarters.fourth.include?(month)
26
45
  end
27
46
 
47
+ # @param month [Integer] the month
48
+ # @return [Array<Integer>] the quarter months by the month.
28
49
  def months(month)
29
- months = FiscalYear.quarters.find { |a| a.include?(month) }
30
- raise ::StandardError if months.nil?
31
-
32
- months
50
+ FiscalYear.quarters.find { |a| a.include?(month) } || raise(StandardError)
33
51
  end
34
52
 
53
+ # @param date [Date] the date
54
+ # @return [Range<Date>] the range of the quarter by the date.
35
55
  def range_by(date)
36
56
  year = date.year
37
57
  this_quarter = months(date.month)
@@ -40,15 +60,35 @@ module FiscalYear
40
60
  Date.parse("#{year}/#{this_quarter.first}/01")..Date.parse("#{last_year}/#{this_quarter.last}/01").end_of_month
41
61
  end
42
62
 
63
+ # @param month [Integer] the month
64
+ # @return [Integer] the quarter number by the month.
43
65
  def quarter_num(month)
44
66
  rindex = FiscalYear.quarters.rindex(months(month))
45
67
 
46
68
  rindex.nil? ? 0 : (rindex + 1)
47
69
  end
48
70
 
71
+ # @param quarter [Array<Integer>] the quarter
72
+ # @return [Boolean] true if the quarter is crossed calendar year.
49
73
  def cross_year_in_quarter?(quarter)
50
74
  FiscalYear.cross_year? && quarter.any? { |month| month == 12 }
51
75
  end
76
+
77
+ # start by 0.
78
+ #
79
+ # @param date [Date] the date
80
+ # @return [Integer] the passed quarter count by the date.
81
+ def passed_month_count_by(date)
82
+ passed_month_count_by_month(date.month)
83
+ end
84
+
85
+ # start by 0.
86
+ #
87
+ # @param month [Integer] the month
88
+ # @return [Integer] the passed quarter count by the month.
89
+ def passed_month_count_by_month(month)
90
+ months(month).find_index(month) || raise(StandardError)
91
+ end
52
92
  end
53
93
  end
54
94
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FiscalYear
4
- VERSION = "0.6.0"
4
+ VERSION = "1.0.0"
5
5
  end
@@ -3,6 +3,14 @@
3
3
  module FiscalYear
4
4
  class YearToDate
5
5
  class << self
6
+ # @param date [Date] the date
7
+ # @return [Range<Date>] the range of the year to date.
8
+ # @example
9
+ # FiscalYear::YearToDate.range_by(Date.parse("2021-08-01"))
10
+ # => Thu, 01 Apr 2021..Tue, 31 Aug 2021
11
+ #
12
+ # FiscalYear::YearToDate.range_by(Date.parse("2021-01-01"))
13
+ # => Wed, 01 Apr 2020..Sun, 31 Jan 2021
6
14
  def range_by(date)
7
15
  year = date.year
8
16
  month = date.month
@@ -14,45 +22,60 @@ module FiscalYear
14
22
  end
15
23
  end
16
24
 
17
- # TODO: fit to Abc size
18
- def year_month_pairs(date) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
25
+ # @param date [Date] the date
26
+ # @return [Array<Array<Integer>, Array<Integer>>] the passed year and month pairs.
27
+ # @example
28
+ # FiscalYear::YearToDate.year_month_pairs(Date.parse("2021-08-01"))
29
+ # => [[2021, 4], [2021, 5], [2021, 6], [2021, 7], [2021, 8]]
30
+ #
31
+ # FiscalYear::YearToDate.year_month_pairs(Date.parse("2021-01-01"))
32
+ # => [
33
+ # [2020, 4], [2020, 5], [2020, 6], [2020, 7], [2020, 8], [2020, 9],
34
+ # [2020, 10], [2020, 11], [2020, 12], [2021, 1]
35
+ # ]
36
+ def year_month_pairs(date)
19
37
  month = date.month
20
38
  month_index = FiscalYear.months.index(month)
21
39
  months = FiscalYear.months[(0..month_index)]
22
40
  raise StandardError if months.nil?
23
41
 
24
42
  [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
43
+ [FiscalYear.decrease_year_by_month(e.first, e.second), e.second]
30
44
  end
31
45
  end
32
46
 
33
- # TODO: fit to Abc size
34
- def half_range_by(date) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
47
+ # @param date [Date] the date
48
+ # @return [Range<Date>] the range of the half year to date.
49
+ # @example
50
+ # FiscalYear::YearToDate.half_range_by(Date.parse("2021-08-01"))
51
+ # => Thu, 01 Apr 2021..Tue, 31 Aug 2021
52
+ #
53
+ # FiscalYear::YearToDate.half_range_by(Date.parse("2021-01-01"))
54
+ # => Thu, 01 Oct 2020..Sun, 31 Jan 2021
55
+ def half_range_by(date)
35
56
  year = date.year
36
57
  month = date.month
37
58
 
38
- if Half.first?(month)
39
- return (Date.parse("#{FiscalYear.cross_year_month?(month) ? year - 1 : year}/#{Half.first.first}/01")..
40
- date.end_of_month.to_date
41
- )
42
- end
59
+ beginning_year =
60
+ if Half.first?(month)
61
+ FiscalYear.cross_year_month?(month) ? year - 1 : year
62
+ else
63
+ Half.cross_year_in_half?(Half.second) ? FiscalYear.decrease_year_by_month(year, month) : year
64
+ end
65
+
66
+ half_method = Half.first?(month) ? :first : :second
43
67
 
44
- Date.parse(
45
- "#{
46
- if FiscalYear::Half.cross_year_in_half?(Half.second) &&
47
- FiscalYear.cross_year_month?(month)
48
- year - 1
49
- else
50
- year
51
- end
52
- }/#{Half.second.first}"
53
- )..date.end_of_month.to_date
68
+ Date.parse("#{beginning_year}/#{Half.public_send(half_method).first}/01")..date.end_of_month.to_date
54
69
  end
55
70
 
71
+ # @param date [Date] the date
72
+ # @return [Range<Date>] the range of the quarter to date.
73
+ # @example
74
+ # FiscalYear::YearToDate.quarter_range_by(Date.parse("2021-08-01"))
75
+ # => Thu, 01 Jul 2021..Tue, 31 Aug 2021
76
+ #
77
+ # FiscalYear::YearToDate.quarter_range_by(Date.parse("2021-01-01"))
78
+ # => Fri, 01 Jan 2021..Sun, 31 Jan 2021
56
79
  def quarter_range_by(date)
57
80
  year = date.year
58
81
  month = date.month
@@ -63,10 +86,10 @@ module FiscalYear
63
86
 
64
87
  quarter = Quarter.public_send(quarter_method)
65
88
 
66
- (
67
- Date.parse("#{FiscalYear.cross_year_month?(month) ? year - 1 : year}/#{quarter.first}/01")..
68
- date.end_of_month.to_date
69
- )
89
+ beginning_year =
90
+ Quarter.cross_year_in_quarter?(quarter) ? FiscalYear.decrease_year_by_month(year, month) : year
91
+
92
+ Date.parse("#{beginning_year}/#{quarter.first}/01")..date.end_of_month.to_date
70
93
  end
71
94
  end
72
95
  end
data/lib/fiscal_year.rb CHANGED
@@ -14,45 +14,67 @@ module FiscalYear
14
14
  # @type ivar @config: FiscalYear::Config
15
15
  @config ||= FiscalYear::Config.new
16
16
  class << self
17
+ # @return [FiscalYear::Config]
17
18
  attr_reader :config
18
19
 
20
+ # configure start month of fiscal year.
21
+ #
22
+ # @yieldparam config [FiscalYear::Config]
23
+ # @example
24
+ # FiscalYear.configure do |config|
25
+ # config.start_month = 6
26
+ # end
19
27
  def configure
20
28
  yield(@config) if block_given?
21
29
  end
22
30
 
31
+ # If the fiscal year start from 4, the month 1, 2, 3 are crossed year.
32
+ #
33
+ # @param month [Integer] the month to check, 1-12.
34
+ # @return [Boolean] true if the month is crossed year on calendar year.
35
+ # Determines if the month passed is beyond the year, By relative to the beginning month of the fiscal year.
23
36
  def cross_year_month?(month)
24
37
  cross_year_months.include?(month)
25
38
  end
26
39
 
40
+ # @return [Boolean] true if the fiscal year is crossed year.
27
41
  def cross_year?
28
42
  months.rindex(1) != 0
29
43
  end
30
44
 
45
+ # @return [Array<Integer>] the months of the fiscal year.
31
46
  def months
32
47
  (1..12).to_a.tap { |arr| arr.concat(arr.shift(@config.start_month - 1)) }
33
48
  end
34
49
 
50
+ # @return [Array<Integer>] the months of the crossed year.
35
51
  def cross_year_months
36
52
  return [] if @config.start_month == 1
37
53
 
38
54
  rindex = months.rindex(1).to_i
39
55
 
40
- m = months.slice(rindex, months.length)
41
- raise StandardError if m.nil?
42
-
43
- m
56
+ months.slice(rindex, months.length) || raise(StandardError)
44
57
  end
45
58
 
59
+ # @return [Array(Array<Integer>, Array<Integer>)] the first half and the second half of the fiscal year.
46
60
  def halfs
47
61
  # @type self: singleton(FiscalYear)
48
62
  months.in_groups(2)
49
63
  end
50
64
 
65
+ # @return [Array(Array<Integer>, Array<Integer>, Array<Integer>, Array<Integer>)] the quarters of the fiscal year.
51
66
  def quarters
52
67
  # @type self: singleton(FiscalYear)
53
68
  months.in_groups(4)
54
69
  end
55
70
 
71
+ # increate the calendar year by month, if the month is crossed year.
72
+ #
73
+ # for example, in case of the fiscal year start from 4, you want to obtain calendar year of the month 1, 2, 3.
74
+ #
75
+ # @param year [Integer] the calendar year
76
+ # @param month [Integer] the month
77
+ # @return [Integer] year
56
78
  def increase_year_by_month(year, month)
57
79
  if FiscalYear.cross_year_month?(month)
58
80
  year + 1
@@ -61,6 +83,13 @@ module FiscalYear
61
83
  end
62
84
  end
63
85
 
86
+ # decrease the calendar year by month, if the month is crossed year.
87
+ #
88
+ # for example, in case of the fiscal year start from 4, you want to obtain fiscal year from the month 1, 2, 3.
89
+ #
90
+ # @param year [Integer] the calendar year
91
+ # @param month [Integer] the month
92
+ # @return [Integer] year
64
93
  def decrease_year_by_month(year, month)
65
94
  if FiscalYear.cross_year_month?(month)
66
95
  year - 1
@@ -69,6 +98,8 @@ module FiscalYear
69
98
  end
70
99
  end
71
100
 
101
+ # @param date [Date] the date
102
+ # @return [Range<Date>] the range of the fiscal year between beginning and end by the date.
72
103
  def range_by(date)
73
104
  year = date.year
74
105
  month = date.month
@@ -76,5 +107,22 @@ module FiscalYear
76
107
 
77
108
  FiscalYear::Half.first_range_by(normalized_year).first..FiscalYear::Half.second_range_by(normalized_year).last
78
109
  end
110
+
111
+ # start by 0.
112
+ #
113
+ # @see passed_month_count_by_month
114
+ # @param date [Date] the date
115
+ # @return [Integer] the passed month count from the beginning of the fiscal year.
116
+ def passed_month_count_by(date)
117
+ passed_month_count_by_month(date.month)
118
+ end
119
+
120
+ # start by 0.
121
+ #
122
+ # @param month [Integer] the month
123
+ # @return [Integer] the passed month count from the beginning of the fiscal year.
124
+ def passed_month_count_by_month(month)
125
+ months.find_index(month) || raise(StandardError)
126
+ end
79
127
  end
80
128
  end
@@ -1,6 +1,10 @@
1
1
  module FiscalYear
2
2
  class Config
3
3
  attr_reader start_month: Integer
4
+ VALID_START_MONTHS: Hash[Symbol, Integer]
4
5
  def initialize: -> Integer
6
+ def start_month=: (Integer|Symbol) -> bool
7
+ def valid_start_month?: (Integer|Symbol) -> bool
8
+ def fetch_start_month: (Integer|Symbol) -> Integer
5
9
  end
6
10
  end
@@ -4,9 +4,12 @@ module FiscalYear
4
4
  def self.second: () -> Array[Integer] | -> Array[untyped]
5
5
  def self.first?: (Integer) -> bool
6
6
  def self.second?: (Integer) -> bool
7
+ def self.months: (Integer) -> Array[Integer]
7
8
  def self.first_range_by: (Integer) -> Range[Date]
8
9
  def self.second_range_by: (Integer) -> Range[Date]
9
10
  def self.range_by: (Date) -> Range[Date]
10
11
  def self.cross_year_in_half?: (Array[Integer]) -> bool
12
+ def self.passed_month_count_by: (Date) -> Integer
13
+ def self.passed_month_count_by_month: (Integer) -> Integer
11
14
  end
12
15
  end
@@ -0,0 +1,5 @@
1
+ module FiscalYear
2
+ class InvalidStartMonthError < StandardError
3
+ def message: -> String
4
+ end
5
+ end
@@ -12,5 +12,7 @@ module FiscalYear
12
12
  def self.range_by: (Date) -> Range[Date]
13
13
  def self.quarter_num: (Integer) -> Integer
14
14
  def self. cross_year_in_quarter?: (Array[Integer]) -> bool
15
+ def self.passed_month_count_by: (Date) -> Integer
16
+ def self.passed_month_count_by_month: (Integer) -> Integer
15
17
  end
16
- end
18
+ end
data/sig/fiscal_year.rbs CHANGED
@@ -12,5 +12,7 @@ module FiscalYear
12
12
  def self.quarters: () -> [Array[Integer], Array[Integer], Array[Integer], Array[Integer]]
13
13
  def self.increase_year_by_month: (Integer, Integer) -> Integer
14
14
  def self.decrease_year_by_month: (Integer, Integer) -> Integer
15
- def self.range_by: (Date) -> Range
15
+ def self.range_by: (Date) -> Range[Date]
16
+ def self.passed_month_count_by: (Date) -> Integer
17
+ def self.passed_month_count_by_month: (Integer) -> Integer
16
18
  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.6.0
4
+ version: 1.0.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: 2024-05-15 00:00:00.000000000 Z
11
+ date: 2024-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -43,6 +43,7 @@ files:
43
43
  - lib/fiscal_year.rb
44
44
  - lib/fiscal_year/config.rb
45
45
  - lib/fiscal_year/half.rb
46
+ - lib/fiscal_year/invalid_start_month_error.rb
46
47
  - lib/fiscal_year/quarter.rb
47
48
  - lib/fiscal_year/version.rb
48
49
  - lib/fiscal_year/year_to_date.rb
@@ -51,6 +52,7 @@ files:
51
52
  - sig/fiscal_year.rbs
52
53
  - sig/fiscal_year/config.rbs
53
54
  - sig/fiscal_year/half.rbs
55
+ - sig/fiscal_year/invalid_start_month_error.rbs
54
56
  - sig/fiscal_year/quarter.rbs
55
57
  - sig/fiscal_year/year_to_date.rbs
56
58
  homepage: https://github.com/TsubasaKawajiri/fiscal_year