periods 0.0.4 → 0.0.5

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: 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