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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8bca4bb489addf1c13b97b9393036dea7c7a8750
4
- data.tar.gz: 6f9b873e913d076b08d1ea25aa6d8ccc1a275c55
3
+ metadata.gz: f213b325b1d0a1f0121ae75fff7f51d98a94ba29
4
+ data.tar.gz: d88cb1821b6b0552b6c4ce7d3046e13a4ff7dc59
5
5
  SHA512:
6
- metadata.gz: 0fd1215e00f8890bab21bda707d6904a43d05aaa8717c3885e9114a9b41cc13fc16e3d30324ea8ade7669c4af1ea192266d5efe17bee639a66ea21bffd022ac0
7
- data.tar.gz: 47461d42951e77ff77f8c57dd185b66b96e0e67f8a69ff7364996490ae1d90cb70d7b95ed323c13cb8cf972c693eb01ac4fbe498f715f925028e5ef198a244f5
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
- * comparing (==, >=, >, <=, <)
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
- Special period models may define additional methods (see below).
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 quarter starts at first day of a month and ends at last day three months later:
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
- def initialize(start_date, end_date)
30
- @start_date = Date.parse(start_date.to_s)
31
- @end_date = Date.parse(end_date.to_s)
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
  ##
@@ -1,3 +1,3 @@
1
1
  module Periods
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: periods
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Baustert