hiccup 0.5.17 → 0.5.18

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: 604218739c9eacb3fe347bb5ce9aaec11b9043c1
4
- data.tar.gz: 8dfd6a12f48cdaec2dc78a6b2388e4153ea94a60
3
+ metadata.gz: 5b2f49ba420f01d88054405099c8018481fbd287
4
+ data.tar.gz: 238c4d45fefd07b91b72ec70c8cd43c23a324e40
5
5
  SHA512:
6
- metadata.gz: dbb02a81c4a2fbc22d62d859208030166cebb5d5fcc558b2b8026cd003fef3294e1aae837bf4ad8a0f8a5730499720d09d03323bd58685bf309a24f9fa729ba5
7
- data.tar.gz: 708ade0f9f4f66c75bb3834767a9cae0840d8906831a56cb22a4d6755f218f643079b2f7779c851ae2d3ca92c49cb78fb8670c511696b02ca0a8e6f022d1b585
6
+ metadata.gz: f6b93567956cd2211d490e8aea9533c4f18cbb2f5262f9ecf97e94084c31aa0261071bd9b345b19fa45ed97b9c15d90ffe710fd5fcd5fa9ae3d312e72bab782b
7
+ data.tar.gz: 8bfbda4a4ba9b3d338d4b579cbe86f3b1fceffab2bb3f6f153d22854d1d4516054d0a0c193b136c8551e8fb94573580b07d881a48c4168f0f55e8ae0b5c7a355
@@ -6,7 +6,7 @@ module Hiccup
6
6
  protected
7
7
 
8
8
  def occurrences_in_month(year, month)
9
- monthly_pattern
9
+ monthly_pattern.map(&method(:coerce_day_to_positive))
10
10
  end
11
11
 
12
12
  end
@@ -110,7 +110,8 @@ module Hiccup
110
110
  if ordinal < 0
111
111
  wday_of_last_of_month = Date.new(year, month, -1).wday
112
112
  day = day + 7 if wday <= wday_of_last_of_month
113
- day = day - wday_of_last_of_month + (ordinal * 7) - 1
113
+ day = day - wday_of_last_of_month + (ordinal * 7)
114
+ day = last_day_of_month + day
114
115
  else
115
116
  wday_of_first_of_month = Date.new(year, month, 1).wday
116
117
  day = day + 7 if (wday < wday_of_first_of_month)
@@ -119,7 +120,7 @@ module Hiccup
119
120
  end
120
121
  day
121
122
  else
122
- occurrence
123
+ coerce_day_to_positive(occurrence)
123
124
  end
124
125
  end
125
126
  end
@@ -165,6 +166,12 @@ module Hiccup
165
166
  end
166
167
 
167
168
 
169
+ def coerce_day_to_positive(index)
170
+ # Converts e.g. -1 (last day of the month) to 31
171
+ return index if index > 0
172
+ last_day_of_month + index + 1
173
+ end
174
+
168
175
  end
169
176
  end
170
177
  end
@@ -1,3 +1,3 @@
1
1
  module Hiccup
2
- VERSION = "0.5.17"
2
+ VERSION = "0.5.18"
3
3
  end
@@ -71,16 +71,15 @@ class MonthlyEnumeratorTest < ActiveSupport::TestCase
71
71
 
72
72
  context "last of the month" do
73
73
  should "return the last day of the month" do
74
- date = Date.new(2014, 12, 31)
74
+ date = Date.new(2014, 12, 30)
75
75
  @schedule = Schedule.new(
76
76
  kind: :monthly,
77
77
  monthly_pattern: [-1],
78
78
  start_date: date
79
79
  )
80
80
  enumerator = @schedule.enumerator.new(@schedule, date)
81
+ assert_equal Date.new(2014, 12, 31), enumerator.next
81
82
  assert_equal Date.new(2015, 1, 31), enumerator.next
82
- assert_equal Date.new(2015, 2, 28), enumerator.next
83
- assert_equal Date.new(2015, 3, 31), enumerator.next
84
83
  end
85
84
 
86
85
  should "return the last sunday of the month" do
@@ -126,6 +125,27 @@ class MonthlyEnumeratorTest < ActiveSupport::TestCase
126
125
  enumerator = @schedule.enumerator.new(@schedule, Date.new(2015, 2, 28))
127
126
  assert_equal Date.new(2015, 2, 17), enumerator.prev
128
127
  end
128
+
129
+ should "find the correct occurence on or after a date in the same month" do
130
+ date = Date.new(2016, 1, 1)
131
+ @schedule = Schedule.new(
132
+ kind: :monthly,
133
+ monthly_pattern: [[-1, "Sunday"]],
134
+ start_date: date
135
+ )
136
+ enumerator = @schedule.enumerator.new(@schedule, date)
137
+ assert_equal Date.new(2016, 1, 31), enumerator.next
138
+ end
139
+
140
+ should "find the correct occurence on or before a date in a subsequent month" do
141
+ @schedule = Schedule.new(
142
+ kind: :monthly,
143
+ monthly_pattern: [[-1, "Friday"]],
144
+ start_date: Date.new(2016, 1, 1)
145
+ )
146
+ enumerator = @schedule.enumerator.new(@schedule, Date.new(2016, 2, 1))
147
+ assert_equal Date.new(2016, 1, 29), enumerator.prev
148
+ end
129
149
  end
130
150
 
131
151
  context "with an empty schedule" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiccup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.17
4
+ version: 0.5.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Lail
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-30 00:00:00.000000000 Z
11
+ date: 2015-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport