hiccup 0.5.11 → 0.5.12

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: 7fe99ba209d0c2a346d24591b15b1dc0cabfbfb6
4
- data.tar.gz: 100d9df2ccd8d556ce1427df1660f28882a3289f
3
+ metadata.gz: 12836b490a92bc840e8813971b18961e8937db6e
4
+ data.tar.gz: cfb2ada216ea9649659e720425ecab1f3639a7ed
5
5
  SHA512:
6
- metadata.gz: 8d8cb3e0f69afab72778f2d0850a158126de8224683f938e028132a146f5418afc9952b4101e8b7a859e45aaf64b9dcc0598394dd062a1f32a23812fe318923d
7
- data.tar.gz: 513c539cff89280cf305c767ef82410bba962d45d03f4b17b3265d6023582e859d8d050e97f17e71f640ea174e0f069b248cf1beba0c4950b116e0770e402ecf
6
+ metadata.gz: f1edf0d7587372b3475b5f80e716d6f355fe227653a3b972e70af069524effced0c4bf153ab1e11e67060fdab30fb54b9bac802e0bbdf3091818310ad6cf3423
7
+ data.tar.gz: 428785f29fb442dee1cba0c1a5cee48348f654f12213a2e15fb4b944260d1f4a85bdd72143d36fb1ae7fb3af8ce96964fc77afeec7b47d35bdf0fbf24536fc27
@@ -52,6 +52,11 @@ module Hiccup
52
52
 
53
53
  def first_occurrence_on_or_after(date)
54
54
  @year, @month = date.year, date.month
55
+ if skip > 1
56
+ offset = months_since_schedule_start(@year, @month)
57
+ add_to_months offset % skip
58
+ end
59
+
55
60
  get_context
56
61
 
57
62
  @position = cycle.index { |day| day >= date.day }
@@ -66,6 +71,11 @@ module Hiccup
66
71
 
67
72
  def first_occurrence_on_or_before(date)
68
73
  @year, @month = date.year, date.month
74
+ if skip > 1
75
+ offset = months_since_schedule_start(@year, @month)
76
+ subtract_from_months offset % skip
77
+ end
78
+
69
79
  get_context
70
80
 
71
81
  @position = cycle.rindex { |day| day <= date.day }
@@ -101,18 +111,26 @@ module Hiccup
101
111
 
102
112
  def next_month
103
113
  @position = 0
104
- @month += skip
105
- @year, @month = year + 1, month - 12 if month > 12
114
+ add_to_months skip
106
115
  get_context
107
116
  end
108
117
 
118
+ def add_to_months(offset)
119
+ @month += offset
120
+ @year, @month = @year + 1, @month - 12 while @month > 12
121
+ end
122
+
109
123
  def prev_month
110
124
  @position = @cycle.length - 1
111
- @month -= skip
112
- @year, @month = year - 1, month + 12 if month < 1
125
+ subtract_from_months skip
113
126
  get_context
114
127
  end
115
128
 
129
+ def subtract_from_months(offset)
130
+ @month -= offset
131
+ @year, @month = @year - 1, @month + 12 while @month < 1
132
+ end
133
+
116
134
  def get_context
117
135
  @last_day_of_month = [4, 6, 9, 11].member?(month) ? 30 : 31
118
136
  @last_day_of_month = leap_year?(year) ? 29 : 28 if month == 2
@@ -121,6 +139,11 @@ module Hiccup
121
139
 
122
140
 
123
141
 
142
+ def months_since_schedule_start(year, month)
143
+ (year - start_date.year) * 12 + (month - start_date.month)
144
+ end
145
+
146
+
124
147
  end
125
148
  end
126
149
  end
@@ -1,3 +1,3 @@
1
1
  module Hiccup
2
- VERSION = "0.5.11"
2
+ VERSION = "0.5.12"
3
3
  end
@@ -22,7 +22,6 @@ class MonthlyEnumeratorTest < ActiveSupport::TestCase
22
22
  end
23
23
 
24
24
  context "when enumerating backward" do
25
-
26
25
  should "return the most-recent date prior to the start_date, NOT the earliest date in the month" do
27
26
  # Start with a date in the middle of the month
28
27
  # More than one date prior to the seed date, yet
@@ -31,8 +30,33 @@ class MonthlyEnumeratorTest < ActiveSupport::TestCase
31
30
  enumerator = @schedule.enumerator.new(@schedule, date)
32
31
  assert_equal Date.new(2013, 10, 13), enumerator.prev
33
32
  end
34
-
35
33
  end
36
34
  end
37
35
 
36
+
37
+ context "with a schedule that skips" do
38
+ setup do
39
+ @schedule = Schedule.new(
40
+ kind: :monthly,
41
+ skip: 2,
42
+ monthly_pattern: [[1, "Thursday"]],
43
+ start_date: Date.new(2015, 1, 1))
44
+ end
45
+
46
+ context "when enumerating from the start date" do
47
+ should "skip months from the schedule's start date" do
48
+ assert_equal [Date.new(2015, 1, 1), Date.new(2015, 3, 5), Date.new(2015, 5, 7)],
49
+ @schedule.occurrences_between(Date.new(2015, 1, 1), Date.new(2015, 5, 31))
50
+ end
51
+ end
52
+
53
+ context "when enumerating from an offset" do
54
+ should "skip months from the schedule's start date not from the offset" do
55
+ assert_equal [Date.new(2015, 3, 5), Date.new(2015, 5, 7)],
56
+ @schedule.occurrences_between(Date.new(2015, 2, 1), Date.new(2015, 6, 30))
57
+ end
58
+ end
59
+ end
60
+
61
+
38
62
  end
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.11
4
+ version: 0.5.12
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-03-11 00:00:00.000000000 Z
11
+ date: 2015-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport