hiccup 0.5.11 → 0.5.12

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