periods 0.0.4 → 0.0.5
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 +4 -4
- data/README.md +26 -7
- data/lib/periods/modules/period.rb +13 -4
- data/lib/periods/version.rb +1 -1
- data/spec/lib/period_spec.rb +27 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f213b325b1d0a1f0121ae75fff7f51d98a94ba29
|
4
|
+
data.tar.gz: d88cb1821b6b0552b6c4ce7d3046e13a4ff7dc59
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e72c9f950fd4d18d80fb4c0f96dbe3e127eb4ea5250aa6ce5c8d7a71f7a08d936f1d93e318f6510ebbc9a7ec237418a45a5265c6f0a453c4bf9a4d9e121d96f7
|
7
|
+
data.tar.gz: 550a89717f3a6a21f5827efe343826d676db91f6f235f557e276d5f4b81cc99cf93c83798d8051a4f221df3f99489e7d6812b3a4ea3fa7388718b1ead68e55d9
|
data/README.md
CHANGED
@@ -41,16 +41,34 @@ The start and end date can be a string too:
|
|
41
41
|
|
42
42
|
period = Period.new('25.06.2015', '19.08.2015')
|
43
43
|
|
44
|
+
For convenience a period can be passed too:
|
45
|
+
|
46
|
+
period = Period.new('25.06.2015', '19.08.2015')
|
47
|
+
...
|
48
|
+
period2 = Period.new(period)
|
49
|
+
|
44
50
|
All period models respond to the following interface:
|
45
51
|
|
52
|
+
* start_year
|
53
|
+
* end_year
|
54
|
+
* days
|
46
55
|
* next
|
47
56
|
* previous
|
48
|
-
* days
|
49
57
|
* include?
|
50
|
-
*
|
51
|
-
*
|
58
|
+
* Comparable (==, >=, >, <=, <)
|
59
|
+
* to_s
|
60
|
+
|
61
|
+
Special period models may define additional methods like `months` (see below).
|
62
|
+
|
63
|
+
#### start_year
|
52
64
|
|
53
|
-
|
65
|
+
period = Period.new('25.06.2015', '19.08.2016')
|
66
|
+
period.start_year # => 2015
|
67
|
+
|
68
|
+
#### end_year
|
69
|
+
|
70
|
+
period = Period.new('25.06.2015', '19.08.2016')
|
71
|
+
period.end_year # => 2016
|
54
72
|
|
55
73
|
#### days
|
56
74
|
|
@@ -97,23 +115,24 @@ If you need a calendar month starting at first day of month and ending at last d
|
|
97
115
|
june.next # => 01.07.2015 - 31.07.2015
|
98
116
|
june.previous # => 01.05.2015 - 31.05.2015
|
99
117
|
june.month # => 6
|
118
|
+
june.number # => 6 (alias for month)
|
100
119
|
june.year # => 2015
|
101
120
|
|
102
121
|
### QuarterlyPeriod
|
103
122
|
|
123
|
+
A QuarterlyPeriod starts at given date and ends at last day three months later:
|
124
|
+
|
104
125
|
period = QuarterlyPeriod.for('25.06.2015') # => 25.06.2015 - 24.09.2015
|
105
126
|
|
106
127
|
### Quarter
|
107
128
|
|
108
|
-
A
|
129
|
+
A Quarter starts at first day of a month and ends at last day three months later:
|
109
130
|
|
110
131
|
quarter = Quarter.for('01.02.2015') # => 01.02.2015 - 30.04.2015
|
111
132
|
quarter.next # => 01.05.2015 - 31.07.2015
|
112
133
|
quarter.previous # => 01.11.2014 - 31.01.2015
|
113
134
|
|
114
135
|
quarter = Quarter.for('01.12.2015') # => 01.12.2015 - 29.02.2016
|
115
|
-
quarter.start_year # => 2015
|
116
|
-
quarter.end_year # => 2016
|
117
136
|
quarter.months # => [Month.for('01.12.2015'), Month.for('01.01.2016'), Month.for('01.02.2016')]
|
118
137
|
|
119
138
|
### HalfyearlyPeriod
|
@@ -24,11 +24,20 @@ module Periods
|
|
24
24
|
#
|
25
25
|
# @example
|
26
26
|
#
|
27
|
+
# period = Period.new(Date.new(2015,4,10), Date.new(2015,5,20))
|
27
28
|
# period = Period.new('10.04.2015', '20.05.2015')
|
28
|
-
#
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
# period = Period.new(Period.new('10.04.2015', '20.05.2015'))
|
30
|
+
#
|
31
|
+
def initialize(start_date, end_date = nil)
|
32
|
+
if start_date.is_a?(Period)
|
33
|
+
@start_date = start_date.start_date
|
34
|
+
@end_date = start_date.end_date
|
35
|
+
elsif end_date.nil?
|
36
|
+
raise ArgumentError, "Period is missing end_date, e.g. Period.new(start_date, end_date)."
|
37
|
+
else
|
38
|
+
@start_date = Date.parse(start_date.to_s)
|
39
|
+
@end_date = Date.parse(end_date.to_s)
|
40
|
+
end
|
32
41
|
end
|
33
42
|
|
34
43
|
##
|
data/lib/periods/version.rb
CHANGED
data/spec/lib/period_spec.rb
CHANGED
@@ -7,6 +7,33 @@ describe Period do
|
|
7
7
|
described_class.new(start_date, end_date)
|
8
8
|
end
|
9
9
|
|
10
|
+
describe ".new" do
|
11
|
+
it "accepts Date" do
|
12
|
+
period = described_class.new(Date.new(2015,6,25), Date.new(2016,5,20))
|
13
|
+
|
14
|
+
expect(period.start_date).to eq Date('25.06.2015')
|
15
|
+
expect(period.end_date).to eq Date('20.05.2016')
|
16
|
+
end
|
17
|
+
|
18
|
+
it "accepts String" do
|
19
|
+
period = described_class.new('25.06.2015', '20.05.2016')
|
20
|
+
|
21
|
+
expect(period.start_date).to eq Date('25.06.2015')
|
22
|
+
expect(period.end_date).to eq Date('20.05.2016')
|
23
|
+
end
|
24
|
+
|
25
|
+
it "raises error if end date is missing" do
|
26
|
+
expect { described_class.new('25.06.2015', nil) }.to raise_error(ArgumentError)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "accepts Period" do
|
30
|
+
period = described_class.new(Period.new('25.06.2015', '20.05.2016'))
|
31
|
+
|
32
|
+
expect(period.start_date).to eq Date('25.06.2015')
|
33
|
+
expect(period.end_date).to eq Date('20.05.2016')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
10
37
|
describe "==" do
|
11
38
|
context "same period given" do
|
12
39
|
it "returns true" do
|