fiscaly 1.1.0 → 1.2.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: 83bdffbd15520ef156308840e2f87e35521b6aeaea378e36985b1b061f6c74bd
4
- data.tar.gz: 762a395022ca4cbb3aeae08155cda216f971f553598349e217b882f581f09859
3
+ metadata.gz: '01081761f20ba665100b05af9b8a78a25fa55842814165402befca7888733083'
4
+ data.tar.gz: d7d519ce2ba94716502aead282c31c8985c66ab5d9a3a2e0279d74ecc3d35b53
5
5
  SHA512:
6
- metadata.gz: 32c6117fc0ee86b5e193d84d08f00f55d6450c1216fc7e6cbc19f5e53b3046fac9c1e81447159267ee5ac0eef33bff010c09ff15b071e4b5b34fd8eded8089c0
7
- data.tar.gz: 16b76da26db027656d57f87f453b79384213666b5a1fda9b49753ac9c7ea581a8b80fb81afc73417c8eb4edb65764a164121e5d86a8d6123b6e51905e1e08e4a
6
+ metadata.gz: 283253dbc0100b0dfccba65926ca3c4b6aba61694cadfd640229f27175fb10d7bafc90c19d490b31f866b7ad2e4f8879f987acf486e4acb4becfa5a1a144e4ee
7
+ data.tar.gz: feaa6a08ab79459935d005031cea5f9f52a7a0073fd0948c5c97ba21770e2976305d22b2e2580c3de495c34cb2856b23c21ee93acbaec68202172ae920178b7b
@@ -1,5 +1,11 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.2.0
4
+
5
+ Features:
6
+
7
+ * Add start_day option.
8
+
3
9
  ## 1.1.0
4
10
 
5
11
  Features:
@@ -5,12 +5,6 @@ require 'fiscaly/version'
5
5
  class Fiscaly
6
6
  KEY = :fiscaly_options
7
7
 
8
- cattr_accessor :options
9
- @@options = {
10
- start_month: 4,
11
- forward_fyear: false
12
- }
13
-
14
8
  attr_reader :date
15
9
  attr_reader :options
16
10
 
@@ -31,13 +25,17 @@ class Fiscaly
31
25
  @options[:start_month]
32
26
  end
33
27
 
28
+ def start_day
29
+ @options[:start_day]
30
+ end
31
+
34
32
  def forward_fyear?
35
33
  @options[:forward_fyear]
36
34
  end
37
35
 
38
36
  def fyear
39
37
  fy = @date.year
40
- fy -= 1 if @date.month < start_month
38
+ fy -= 1 if @date.month < start_month || (@date.month == start_month && @date.day < start_day)
41
39
  fy += 1 if forward_fyear?
42
40
  fy
43
41
  end
@@ -48,11 +46,11 @@ class Fiscaly
48
46
 
49
47
  def beginning_of_fyear
50
48
  year = forward_fyear? ? fyear - 1 : fyear
51
- Date.new(year, start_month)
49
+ Date.new(year, start_month, start_day)
52
50
  end
53
51
 
54
52
  def end_of_fyear
55
- (beginning_of_fyear + 11.months).end_of_month
53
+ beginning_of_fyear + 12.months - 1.days
56
54
  end
57
55
 
58
56
  def range_of_fyear
@@ -70,7 +68,7 @@ class Fiscaly
70
68
  end
71
69
 
72
70
  def end_of_fhalf(index = nil)
73
- (beginning_of_fhalf(index) + 5.months).end_of_month
71
+ beginning_of_fhalf(index) + 6.months - 1.days
74
72
  end
75
73
 
76
74
  def range_of_fhalf(index = nil)
@@ -88,13 +86,25 @@ class Fiscaly
88
86
  end
89
87
 
90
88
  def end_of_fquarter(index = nil)
91
- (beginning_of_fquarter(index) + 2.months).end_of_month
89
+ beginning_of_fquarter(index) + 3.months - 1.days
92
90
  end
93
91
 
94
92
  def range_of_fquarter(index = nil)
95
93
  beginning_of_fquarter(index)..end_of_fquarter(index)
96
94
  end
97
95
 
96
+ def beginning_of_fmonth
97
+ Date.new(year, month, start_day)
98
+ end
99
+
100
+ def end_of_fmonth
101
+ beginning_of_fmonth + 1.month - 1.days
102
+ end
103
+
104
+ def range_of_fmonth
105
+ beginning_of_fmonth..end_of_fmonth
106
+ end
107
+
98
108
  def range_of_month
99
109
  @date.beginning_of_month..@date.end_of_month
100
110
  end
@@ -102,6 +112,14 @@ class Fiscaly
102
112
  private
103
113
 
104
114
  class << self
115
+ attr_accessor :options
116
+
117
+ @@options = {
118
+ start_month: 4,
119
+ start_day: 1,
120
+ forward_fyear: false
121
+ }
122
+
105
123
  def today(options = {})
106
124
  date(Date.today, options)
107
125
  end
@@ -148,6 +166,10 @@ class Fiscaly
148
166
  @@options[:start_month] = val
149
167
  end
150
168
 
169
+ def start_day=(val)
170
+ @@options[:start_day] = val
171
+ end
172
+
151
173
  def forward_fyear=(val)
152
174
  @@options[:forward_fyear] = val
153
175
  end
@@ -157,7 +179,7 @@ class Fiscaly
157
179
  def normalize(fyear, month, day, options = {})
158
180
  options = global_options.merge(options)
159
181
  year = fyear
160
- year += 1 if month < options[:start_month]
182
+ year += 1 if month < options[:start_month] || (month == options[:start_month] && day < options[:start_day])
161
183
  year -= 1 if options[:forward_fyear]
162
184
  Date.new(year, month, day)
163
185
  end
@@ -1,3 +1,3 @@
1
1
  class Fiscaly
2
- VERSION = '1.1.0'
2
+ VERSION = '1.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fiscaly
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoshikazu Kaneta
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-07 00:00:00.000000000 Z
11
+ date: 2019-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
110
  requirements: []
111
- rubygems_version: 3.0.1
111
+ rubygems_version: 3.0.3
112
112
  signing_key:
113
113
  specification_version: 4
114
114
  summary: Financial date class for ruby