periods 0.0.6 → 0.0.7

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
  SHA1:
3
- metadata.gz: be562d9701b30b7afcfc6dac163ad6e9a7cad181
4
- data.tar.gz: a57326343a2442706f503dfe46776e5c084fc876
3
+ metadata.gz: 157af8429236011f6b5d28c43df6a6c6fd96156e
4
+ data.tar.gz: 80a7b74aa78c8e08b39a41e7e1c505a748162d40
5
5
  SHA512:
6
- metadata.gz: 7d03693f89c82cca815bb05ec1c4a3a03d0250c196a757c6b658dad0c41c47b9aa7d21ab4abb192c562d10f5908da4e1a2b210dfca53832e5a8afb005c6f8b90
7
- data.tar.gz: 8464da097b035ad3ea932e43450efab9edeefbdf4eac9938652910e8e202e54e7a8a712ad263f38ce80615d0086a67572cf93524ce2f1eb741ad92282dcbad72
6
+ metadata.gz: 8d702a50cef9515c488948d02537cf912e7694704a832b72b62e62836b86f7092bf560f4f97011444ae7582e3f127a9a82f92b3b4fe45f3b32f234a0f259fe20
7
+ data.tar.gz: 1fa325d6fb372e852759ff8cc341a0d7aaeb6ec1fcb67f9f998adc22aada49e42b4fa7cb93eb2cee355abaf7e9c82240bf381e6b077cee91e58344695f2460ca
data/README.md CHANGED
@@ -111,7 +111,7 @@ If you need a constant monthly range use `MonthlyPeriod`:
111
111
 
112
112
  If you need a calendar month starting at first day of month and ending at last day of month use `Month`:
113
113
 
114
- june = MonthPeriod.for('25.06.2015') # => 01.06.2015 - 30.06.2015
114
+ june = Month.for('25.06.2015') # => 01.06.2015 - 30.06.2015
115
115
  june.next # => 01.07.2015 - 31.07.2015
116
116
  june.previous # => 01.05.2015 - 31.05.2015
117
117
  june.month # => 6
@@ -10,6 +10,7 @@ module Periods
10
10
  include Periods::Modules::Period
11
11
  include SingleDateInitialize
12
12
  include InstanceMethods
13
+ alias_method :succ, :next
13
14
  end
14
15
  end
15
16
 
@@ -9,6 +9,7 @@ module Periods
9
9
  base.class_eval do
10
10
  include Periods::Modules::MonthlyPeriod
11
11
  include InstanceMethods
12
+ alias_method :succ, :next
12
13
  end
13
14
  end
14
15
 
@@ -25,10 +26,10 @@ module Periods
25
26
  end
26
27
 
27
28
  def to_s(*args)
28
- if args.first.to_s == 'date'
29
- "#{start_date.strftime("%m.%Y")} (#{start_date.strftime("%d.%m.%Y")} - #{end_date.strftime("%d.%m.%Y")})"
30
- else
29
+ if args.first.to_s == 'month'
31
30
  "#{start_date.strftime("%m.%Y")}"
31
+ else
32
+ super
32
33
  end
33
34
  end
34
35
 
@@ -205,6 +205,98 @@ module Periods
205
205
  "#{start_date.strftime("%d.%m.%Y")} - #{end_date.strftime("%d.%m.%Y")}"
206
206
  end
207
207
 
208
+ ##
209
+ # Returns the months included in this period including the month of the start and end date
210
+ # of this period.
211
+ #
212
+ # @return [Month] an array of months included in this period.
213
+ #
214
+ # @since 0.0.7
215
+ #
216
+ # @example
217
+ #
218
+ # Period.new('01.01.2015', '31.12.2015').months # => Jan, Feb, ..., Dec
219
+ # Period.new('17.04.2015', '26.08.2015').months # => Apr, Mai, Jun, Jul, Aug
220
+ #
221
+ def months
222
+ (Periods::Month.for(start_date)..Periods::Month.for(end_date)).to_a
223
+ end
224
+
225
+ ##
226
+ # Returns the quarters included in this period including the quarter of the start date
227
+ # of this period. The quarter of the end date of this period is only included if the
228
+ # quarter's end date is before/equal the end date of this period.
229
+ #
230
+ # @return [Quarter] an array of quarters included in this period.
231
+ #
232
+ # @since 0.0.7
233
+ #
234
+ # @example
235
+ #
236
+ # Period.new('01.01.2015', '31.12.2015').quarters # => [(J,F,M),(A,M,J),(J,A,S),(O,N,D)]
237
+ # Period.new('17.04.2015', '26.08.2015').quarters # => [(A,M,J) but not (J,A,S)]
238
+ #
239
+ def quarters
240
+ quarters = []
241
+ quarter = Periods::Quarter.for(start_date)
242
+ while quarter.end_date <= end_date
243
+ quarters << quarter
244
+ quarter = quarter.next
245
+ end
246
+ quarters
247
+ end
248
+
249
+ ##
250
+ # Returns the halfyears included in this period including the halfyear of the start date
251
+ # of this period. The halfyear of the end date of this period is only included if the
252
+ # halfyear's end date is before/equal the end date of this period.
253
+ #
254
+ # @return [Halfyear] an array of halfyears included in this period.
255
+ #
256
+ # @since 0.0.7
257
+ #
258
+ # @example
259
+ #
260
+ # Period.new('01.01.2015', '31.12.2015').halfyears # => [(Jan-Jun),(Jul-Dec)]
261
+ # Period.new('17.04.2015', '26.08.2015').halfyears # => []
262
+ # Period.new('01.01.2015', '31.05.2016').halfyears # => [(Jan-Jun),(Jul-Dec)]
263
+ # Period.new('01.01.2015', '30.06.2016').halfyears # => [(Jan-Jun),(Jul-Dec),(Jan-Jun)]
264
+ #
265
+ def halfyears
266
+ halfyears = []
267
+ halfyear = Periods::Halfyear.for(start_date)
268
+ while halfyear.end_date <= end_date
269
+ halfyears << halfyear
270
+ halfyear = halfyear.next
271
+ end
272
+ halfyears
273
+ end
274
+
275
+ ##
276
+ # Returns the years included in this period including the year of the start date
277
+ # of this period. The year of the end date of this period is only included if the
278
+ # year's end date is before/equal the end date of this period.
279
+ #
280
+ # @return [Year] an array of halfyears included in this period.
281
+ #
282
+ # @since 0.0.7
283
+ #
284
+ # @example
285
+ #
286
+ # Period.new('01.01.2015', '31.12.2015').halfyears # => [(Jan-Dec)]
287
+ # Period.new('17.04.2015', '26.08.2015').halfyears # => []
288
+ # Period.new('01.01.2015', '31.05.2016').halfyears # => [(Jan-Dec)]
289
+ # Period.new('01.01.2015', '31.12.2016').halfyears # => [(Jan-Dec),(Jan-Dec)]
290
+ #
291
+ def years
292
+ years = []
293
+ year = Periods::Year.for(start_date)
294
+ while year.end_date <= end_date
295
+ years << year
296
+ year = year.next
297
+ end
298
+ years
299
+ end
208
300
  end
209
301
  end
210
302
  end
@@ -11,6 +11,7 @@ module Periods
11
11
  include Periods::Modules::Period
12
12
  include SingleDateInitialize
13
13
  include InstanceMethods
14
+ alias_method :succ, :next
14
15
  end
15
16
  end
16
17
 
@@ -10,6 +10,7 @@ module Periods
10
10
  include Periods::Modules::Period
11
11
  include SingleDateInitialize
12
12
  include InstanceMethods
13
+ alias_method :succ, :next
13
14
  end
14
15
  end
15
16
 
@@ -1,3 +1,3 @@
1
1
  module Periods
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -6,7 +6,6 @@ describe Halfyear do
6
6
 
7
7
  let(:subject) { described_class.for("1.1.2015") }
8
8
 
9
- it_behaves_like "Lint Check"
10
9
  it_behaves_like "Initialized by single date" do
11
10
  let(:period) { described_class.for(Date.new(2015,6,25)) }
12
11
  end
@@ -6,7 +6,6 @@ describe HalfyearlyPeriod do
6
6
 
7
7
  let(:subject) { described_class.for("1.1.2015") }
8
8
 
9
- it_behaves_like "Lint Check"
10
9
  it_behaves_like "Initialized by single date" do
11
10
  let(:period) { described_class.for(Date.new(2015,6,25)) }
12
11
  end
@@ -6,8 +6,6 @@ describe January do
6
6
 
7
7
  let(:subject) { January.of(2015) }
8
8
 
9
- it_behaves_like "Lint Check"
10
-
11
9
  describe ".of" do
12
10
  it "returns January of given year" do
13
11
  expect(described_class.of(2014)).to eq Month.for('01.01.2014')
@@ -6,7 +6,6 @@ describe Month do
6
6
 
7
7
  let(:subject) { described_class.for("1.1.2015") }
8
8
 
9
- it_behaves_like "Lint Check"
10
9
  it_behaves_like "Initialized by single date" do
11
10
  let(:period) { described_class.for(Date.new(2015,6,25)) }
12
11
  end
@@ -50,4 +49,30 @@ describe Month do
50
49
  expect(described_class.for('01.01.2014').year).to eq 2014
51
50
  end
52
51
  end
52
+
53
+ describe "#to_s" do
54
+ context "nothing passed" do
55
+ it "returns period" do
56
+ expect(described_class.for('01.03.2015').to_s).to eq "01.03.2015 - 31.03.2015"
57
+ expect(described_class.for('01.06.2015').to_s).to eq "01.06.2015 - 30.06.2015"
58
+ end
59
+ end
60
+
61
+ context ":month passed" do
62
+ it "returns month.year" do
63
+ expect(described_class.for('01.01.2015').to_s(:month)).to eq "01.2015"
64
+ expect(described_class.for('01.06.2015').to_s(:month)).to eq "06.2015"
65
+ end
66
+ end
67
+ end
68
+
69
+ describe "Range" do
70
+ it "works" do
71
+ expect((Month.for("01.01.2015")..Month.for("31.01.2015")).to_a).to eq new_months("01.01.2015", 1)
72
+ expect((Month.for("01.01.2015")..Month.for("28.02.2015")).to_a).to eq new_months("01.01.2015", 2)
73
+ expect((Month.for("01.01.2015")..Month.for("26.08.2015")).to_a).to eq new_months("01.01.2015", 8)
74
+ expect((Month.for("01.01.2015")..Month.for("31.12.2015")).to_a).to eq new_months("01.01.2015", 12)
75
+ expect((Month.for("01.01.2015")..Month.for("31.05.2016")).to_a).to eq new_months("01.01.2015", 17)
76
+ end
77
+ end
53
78
  end
@@ -6,7 +6,6 @@ describe MonthlyPeriod do
6
6
 
7
7
  let(:subject) { described_class.for("1.1.2015") }
8
8
 
9
- it_behaves_like "Lint Check"
10
9
  it_behaves_like "Initialized by single date" do
11
10
  let(:period) { described_class.for(Date.new(2015,6,25)) }
12
11
  end
@@ -3,10 +3,6 @@ require 'periods/constants'
3
3
 
4
4
  describe Period do
5
5
 
6
- def new_period(start_date, end_date)
7
- described_class.new(start_date, end_date)
8
- end
9
-
10
6
  describe ".new" do
11
7
  it "accepts Date" do
12
8
  period = described_class.new(Date.new(2015,6,25), Date.new(2016,5,20))
@@ -142,6 +138,51 @@ describe Period do
142
138
  end
143
139
  end
144
140
  end
141
+
142
+ describe "#to_s" do
143
+ it "returns period" do
144
+ expect(new_period("09.04.2015", "20.05.2015").to_s).to eq "09.04.2015 - 20.05.2015"
145
+ expect(new_period("26.06.2014", "10.09.2015").to_s).to eq "26.06.2014 - 10.09.2015"
146
+ end
147
+ end
148
+
149
+ describe "#months" do
150
+ it "returns months included period" do
151
+ expect(new_period("01.01.2015", "31.12.2015").months).to eq new_months("01.01.2015", 12)
152
+ expect(new_period("17.04.2015", "26.08.2015").months).to eq new_months("01.04.2015", 5)
153
+ expect(new_period("01.01.2015", "31.05.2016").months).to eq new_months("01.01.2015", 17)
154
+ expect(new_period("08.02.2015", "09.02.2015").months).to eq new_months("01.02.2015", 1)
155
+ end
156
+ end
157
+
158
+ describe "#quarters" do
159
+ it "returns quarters included period" do
160
+ expect(new_period("01.01.2015", "31.12.2015").quarters).to eq new_quarters("01.01.2015", 4)
161
+ expect(new_period("17.04.2015", "26.08.2015").quarters).to eq new_quarters("01.04.2015", 1)
162
+ expect(new_period("17.04.2015", "31.05.2015").quarters).to eq []
163
+ expect(new_period("01.01.2015", "31.05.2016").quarters).to eq new_quarters("01.01.2015", 5)
164
+ end
165
+ end
166
+
167
+ describe "#halfyears" do
168
+ it "returns halfyears included period" do
169
+ expect(new_period("01.01.2015", "31.12.2015").halfyears).to eq new_halfyears("01.01.2015", 2)
170
+ expect(new_period("17.04.2015", "26.08.2015").halfyears).to eq []
171
+ expect(new_period("01.01.2015", "31.05.2016").halfyears).to eq new_halfyears("01.01.2015", 2)
172
+ expect(new_period("01.01.2015", "30.06.2016").halfyears).to eq new_halfyears("01.01.2015", 3)
173
+ expect(new_period("01.01.2015", "20.07.2016").halfyears).to eq new_halfyears("01.01.2015", 3)
174
+ end
175
+ end
176
+
177
+ describe "#years" do
178
+ it "returns years included period" do
179
+ expect(new_period("01.01.2015", "31.12.2015").years).to eq [Periods::Year.for("01.01.2015")]
180
+ expect(new_period("17.04.2015", "26.08.2015").years).to eq []
181
+ expect(new_period("01.01.2015", "31.05.2016").years).to eq [Periods::Year.for("01.01.2015")]
182
+ expect(new_period("01.01.2015", "30.06.2016").years).to eq [Periods::Year.for("01.01.2015")]
183
+ expect(new_period("01.01.2015", "31.12.2016").years).to eq [Periods::Year.for("01.01.2015"), Periods::Year.for("01.01.2016")]
184
+ end
185
+ end
145
186
  end
146
187
 
147
188
 
@@ -6,7 +6,6 @@ describe Quarter do
6
6
 
7
7
  let(:subject) { described_class.for("1.1.2015") }
8
8
 
9
- it_behaves_like "Lint Check"
10
9
  it_behaves_like "Initialized by single date" do
11
10
  let(:period) { described_class.for(Date.new(2015,6,25)) }
12
11
  end
@@ -6,7 +6,6 @@ describe QuarterlyPeriod do
6
6
 
7
7
  let(:subject) { described_class.for("1.1.2015") }
8
8
 
9
- it_behaves_like "Lint Check"
10
9
  it_behaves_like "Initialized by single date" do
11
10
  let(:period) { described_class.for(Date.new(2015,6,25)) }
12
11
  end
@@ -6,7 +6,6 @@ describe Year do
6
6
 
7
7
  let(:subject) { described_class.for("1.1.2015") }
8
8
 
9
- it_behaves_like "Lint Check"
10
9
  it_behaves_like "Initialized by single date" do
11
10
  let(:period) { described_class.for(Date.new(2015,6,25)) }
12
11
  end
@@ -6,7 +6,6 @@ describe YearlyPeriod do
6
6
 
7
7
  let(:subject) { described_class.for("1.1.2015") }
8
8
 
9
- it_behaves_like "Lint Check"
10
9
  it_behaves_like "Initialized by single date" do
11
10
  let(:period) { described_class.for(Date.new(2015,6,25)) }
12
11
  end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,3 @@
1
- require 'lint_check'
2
-
3
1
  RSpec.configure do |config|
4
2
  # rspec-expectations config goes here. You can use an alternate
5
3
  # assertion/expectation library such as wrong or the stdlib/minitest
@@ -76,4 +74,39 @@ end
76
74
 
77
75
  def Date(date)
78
76
  Date.parse(date.to_s)
79
- end
77
+ end
78
+
79
+ def new_period(start_date, end_date)
80
+ described_class.new(start_date, end_date)
81
+ end
82
+
83
+ def new_months(start_date, count)
84
+ months = [Periods::Month.for(start_date)]
85
+ month = months.first.next
86
+ 2.upto(count) do |idx|
87
+ months << month
88
+ month = month.next
89
+ end
90
+ months
91
+ end
92
+
93
+ def new_quarters(start_date, count)
94
+ quarters = [Periods::Quarter.for(start_date)]
95
+ quarter = quarters.first.next
96
+ 2.upto(count) do |idx|
97
+ quarters << quarter
98
+ quarter = quarter.next
99
+ end
100
+ quarters
101
+ end
102
+
103
+ def new_halfyears(start_date, count)
104
+ halfyears = [Periods::Halfyear.for(start_date)]
105
+ halfyear = halfyears.first.next
106
+ 2.upto(count) do |idx|
107
+ halfyears << halfyear
108
+ halfyear = halfyear.next
109
+ end
110
+ halfyears
111
+ end
112
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: periods
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Baustert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-18 00:00:00.000000000 Z
11
+ date: 2016-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -110,7 +110,6 @@ files:
110
110
  - spec/lib/quarterly_period_spec.rb
111
111
  - spec/lib/year_spec.rb
112
112
  - spec/lib/yearly_period_spec.rb
113
- - spec/lint_check.rb
114
113
  - spec/spec_helper.rb
115
114
  homepage: https://github.com/thomasbaustert/periods
116
115
  licenses:
@@ -132,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
131
  version: '0'
133
132
  requirements: []
134
133
  rubyforge_project:
135
- rubygems_version: 2.4.3
134
+ rubygems_version: 2.4.8
136
135
  signing_key:
137
136
  specification_version: 4
138
137
  summary: Simple period types like Week, Month, Quarter, Halfyear, Year.
@@ -151,5 +150,4 @@ test_files:
151
150
  - spec/lib/quarterly_period_spec.rb
152
151
  - spec/lib/year_spec.rb
153
152
  - spec/lib/yearly_period_spec.rb
154
- - spec/lint_check.rb
155
153
  - spec/spec_helper.rb
data/spec/lint_check.rb DELETED
@@ -1,24 +0,0 @@
1
- shared_examples "Lint Check" do
2
-
3
- it "respond #next" do
4
- expect(subject).to respond_to(:next)
5
- end
6
-
7
- it "respond #previous" do
8
- expect(subject).to respond_to(:previous)
9
- end
10
-
11
- it "respond #days" do
12
- expect(subject).to respond_to(:days)
13
- end
14
-
15
- it "respond #include?" do
16
- expect(subject).to respond_to(:include?)
17
- end
18
-
19
- it "is Comparable" do
20
- expect(subject).to be_kind_of(Comparable)
21
- end
22
- end
23
-
24
-