chronic 0.5.0 → 0.6.0

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.
Files changed (46) hide show
  1. data/HISTORY.md +14 -1
  2. data/lib/chronic.rb +6 -42
  3. data/lib/chronic/chronic.rb +73 -48
  4. data/lib/chronic/handler.rb +90 -0
  5. data/lib/chronic/handlers.rb +131 -139
  6. data/lib/chronic/mini_date.rb +12 -6
  7. data/lib/chronic/numerizer.rb +3 -2
  8. data/lib/chronic/pointer.rb +1 -2
  9. data/lib/chronic/repeater.rb +3 -6
  10. data/lib/chronic/repeaters/repeater_day.rb +6 -6
  11. data/lib/chronic/repeaters/repeater_day_name.rb +1 -1
  12. data/lib/chronic/repeaters/repeater_day_portion.rb +8 -8
  13. data/lib/chronic/repeaters/repeater_fortnight.rb +2 -2
  14. data/lib/chronic/repeaters/repeater_hour.rb +7 -7
  15. data/lib/chronic/repeaters/repeater_minute.rb +6 -6
  16. data/lib/chronic/repeaters/repeater_month.rb +10 -10
  17. data/lib/chronic/repeaters/repeater_month_name.rb +9 -9
  18. data/lib/chronic/repeaters/repeater_season.rb +10 -10
  19. data/lib/chronic/repeaters/repeater_season_name.rb +2 -2
  20. data/lib/chronic/repeaters/repeater_weekday.rb +1 -1
  21. data/lib/chronic/repeaters/repeater_year.rb +11 -11
  22. data/lib/chronic/season.rb +3 -3
  23. data/lib/chronic/tag.rb +2 -0
  24. data/test/test_Chronic.rb +48 -4
  25. data/test/test_DaylightSavings.rb +1 -1
  26. data/test/test_Handler.rb +1 -6
  27. data/test/test_MiniDate.rb +3 -3
  28. data/test/test_Numerizer.rb +1 -1
  29. data/test/test_RepeaterDayName.rb +1 -1
  30. data/test/test_RepeaterFortnight.rb +1 -1
  31. data/test/test_RepeaterHour.rb +1 -1
  32. data/test/test_RepeaterMinute.rb +1 -1
  33. data/test/test_RepeaterMonth.rb +1 -1
  34. data/test/test_RepeaterMonthName.rb +1 -1
  35. data/test/test_RepeaterSeason.rb +1 -1
  36. data/test/test_RepeaterTime.rb +1 -1
  37. data/test/test_RepeaterWeek.rb +1 -1
  38. data/test/test_RepeaterWeekday.rb +1 -1
  39. data/test/test_RepeaterWeekend.rb +1 -1
  40. data/test/test_RepeaterYear.rb +1 -1
  41. data/test/test_Span.rb +1 -1
  42. data/test/test_Token.rb +1 -1
  43. data/test/test_parsing.rb +12 -6
  44. metadata +3 -5
  45. data/Manifest.txt +0 -63
  46. data/test/test_Time.rb +0 -49
@@ -2,9 +2,13 @@ module Chronic
2
2
  class MiniDate
3
3
  attr_accessor :month, :day
4
4
 
5
+ def self.from_time(time)
6
+ new(time.month, time.day)
7
+ end
8
+
5
9
  def initialize(month, day)
6
10
  unless (1..12).include?(month)
7
- raise(InvalidArgumentException, "1..12 are valid months")
11
+ raise ArgumentError, "1..12 are valid months"
8
12
  end
9
13
 
10
14
  @month = month
@@ -12,11 +16,13 @@ module Chronic
12
16
  end
13
17
 
14
18
  def is_between?(md_start, md_end)
15
- return false if (@month == md_start.month && @month == md_end.month &&
16
- (@day < md_start.day || @day > md_end.day))
17
- return true if (@month == md_start.month and @day >= md_start.day) ||
18
- (@month == md_end.month and @day <= md_end.day)
19
+ return false if (@month == md_start.month && @month == md_end.month) &&
20
+ (@day < md_start.day || @day > md_end.day)
21
+ return true if (@month == md_start.month && @day >= md_start.day) ||
22
+ (@month == md_end.month && @day <= md_end.day)
23
+
19
24
  i = (md_start.month % 12) + 1
25
+
20
26
  until i == md_end.month
21
27
  return true if @month == i
22
28
  i = (i % 12) + 1
@@ -26,7 +32,7 @@ module Chronic
26
32
  end
27
33
 
28
34
  def equals?(other)
29
- @month == other.month and day == other.day
35
+ @month == other.month and @day == other.day
30
36
  end
31
37
  end
32
38
  end
@@ -107,14 +107,15 @@ module Chronic
107
107
 
108
108
  def andition(string)
109
109
  sc = StringScanner.new(string)
110
- while(sc.scan_until(/<num>(\d+)( | and )<num>(\d+)(?=[^\w]|$)/i))
110
+
111
+ while sc.scan_until(/<num>(\d+)( | and )<num>(\d+)(?=[^\w]|$)/i)
111
112
  if sc[2] =~ /and/ || sc[1].size > sc[3].size
112
113
  string[(sc.pos - sc.matched_size)..(sc.pos-1)] = '<num>' + (sc[1].to_i + sc[3].to_i).to_s
113
114
  sc.reset
114
115
  end
115
116
  end
116
117
  end
117
- end
118
118
 
119
+ end
119
120
  end
120
121
  end
@@ -19,8 +19,7 @@ module Chronic
19
19
  scan_for token, self,
20
20
  {
21
21
  /\bpast\b/ => :past,
22
- /\bfuture\b/ => :future,
23
- /\bin\b/ => :future
22
+ /\b(?:future|in)\b/ => :future,
24
23
  }
25
24
  end
26
25
 
@@ -56,12 +56,9 @@ module Chronic
56
56
  scan_for token, RepeaterDayName,
57
57
  {
58
58
  /^m[ou]n(day)?$/ => :monday,
59
- /^t(ue|eu|oo|u|)s(day)?$/ => :tuesday,
60
- /^tue$/ => :tuesday,
61
- /^we(dnes|nds|nns)day$/ => :wednesday,
62
- /^wed$/ => :wednesday,
63
- /^th(urs|ers)day$/ => :thursday,
64
- /^thu(rs)?$/ => :thursday,
59
+ /^t(ue|eu|oo|u|)s?(day)?$/ => :tuesday,
60
+ /^we(d|dnes|nds|nns)(day)?$/ => :wednesday,
61
+ /^th(urs|ers)(day)?$/ => :thursday,
65
62
  /^fr[iy](day)?$/ => :friday,
66
63
  /^sat(t?[ue]rday)?$/ => :saturday,
67
64
  /^su[nm](day)?$/ => :sunday
@@ -24,14 +24,14 @@ module Chronic
24
24
 
25
25
  case pointer
26
26
  when :future
27
- day_begin = Time.construct(@now.year, @now.month, @now.day, @now.hour)
28
- day_end = Time.construct(@now.year, @now.month, @now.day) + DAY_SECONDS
27
+ day_begin = Chronic.construct(@now.year, @now.month, @now.day, @now.hour)
28
+ day_end = Chronic.construct(@now.year, @now.month, @now.day) + DAY_SECONDS
29
29
  when :past
30
- day_begin = Time.construct(@now.year, @now.month, @now.day)
31
- day_end = Time.construct(@now.year, @now.month, @now.day, @now.hour)
30
+ day_begin = Chronic.construct(@now.year, @now.month, @now.day)
31
+ day_end = Chronic.construct(@now.year, @now.month, @now.day, @now.hour)
32
32
  when :none
33
- day_begin = Time.construct(@now.year, @now.month, @now.day)
34
- day_end = Time.construct(@now.year, @now.month, @now.day) + DAY_SECONDS
33
+ day_begin = Chronic.construct(@now.year, @now.month, @now.day)
34
+ day_end = Chronic.construct(@now.year, @now.month, @now.day) + DAY_SECONDS
35
35
  end
36
36
 
37
37
  Span.new(day_begin, day_end)
@@ -24,7 +24,7 @@ module Chronic
24
24
  @current_date += direction * 7
25
25
  end
26
26
  next_date = @current_date.succ
27
- Span.new(Time.construct(@current_date.year, @current_date.month, @current_date.day), Time.construct(next_date.year, next_date.month, next_date.day))
27
+ Span.new(Chronic.construct(@current_date.year, @current_date.month, @current_date.day), Chronic.construct(next_date.year, next_date.month, next_date.day))
28
28
  end
29
29
 
30
30
  def this(pointer = :future)
@@ -28,27 +28,27 @@ module Chronic
28
28
  full_day = 60 * 60 * 24
29
29
 
30
30
  if !@current_span
31
- now_seconds = @now - Time.construct(@now.year, @now.month, @now.day)
31
+ now_seconds = @now - Chronic.construct(@now.year, @now.month, @now.day)
32
32
  if now_seconds < @range.begin
33
33
  case pointer
34
34
  when :future
35
- range_start = Time.construct(@now.year, @now.month, @now.day) + @range.begin
35
+ range_start = Chronic.construct(@now.year, @now.month, @now.day) + @range.begin
36
36
  when :past
37
- range_start = Time.construct(@now.year, @now.month, @now.day) - full_day + @range.begin
37
+ range_start = Chronic.construct(@now.year, @now.month, @now.day) - full_day + @range.begin
38
38
  end
39
39
  elsif now_seconds > @range.end
40
40
  case pointer
41
41
  when :future
42
- range_start = Time.construct(@now.year, @now.month, @now.day) + full_day + @range.begin
42
+ range_start = Chronic.construct(@now.year, @now.month, @now.day) + full_day + @range.begin
43
43
  when :past
44
- range_start = Time.construct(@now.year, @now.month, @now.day) + @range.begin
44
+ range_start = Chronic.construct(@now.year, @now.month, @now.day) + @range.begin
45
45
  end
46
46
  else
47
47
  case pointer
48
48
  when :future
49
- range_start = Time.construct(@now.year, @now.month, @now.day) + full_day + @range.begin
49
+ range_start = Chronic.construct(@now.year, @now.month, @now.day) + full_day + @range.begin
50
50
  when :past
51
- range_start = Time.construct(@now.year, @now.month, @now.day) - full_day + @range.begin
51
+ range_start = Chronic.construct(@now.year, @now.month, @now.day) - full_day + @range.begin
52
52
  end
53
53
  end
54
54
 
@@ -66,7 +66,7 @@ module Chronic
66
66
  def this(context = :future)
67
67
  super
68
68
 
69
- range_start = Time.construct(@now.year, @now.month, @now.day) + @range.begin
69
+ range_start = Chronic.construct(@now.year, @now.month, @now.day) + @range.begin
70
70
  @current_span = Span.new(range_start, range_start + (@range.end - @range.begin))
71
71
  end
72
72
 
@@ -38,7 +38,7 @@ module Chronic
38
38
 
39
39
  case pointer
40
40
  when :future
41
- this_fortnight_start = Time.construct(@now.year, @now.month, @now.day, @now.hour) + RepeaterHour::HOUR_SECONDS
41
+ this_fortnight_start = Chronic.construct(@now.year, @now.month, @now.day, @now.hour) + RepeaterHour::HOUR_SECONDS
42
42
  sunday_repeater = RepeaterDayName.new(:sunday)
43
43
  sunday_repeater.start = @now
44
44
  sunday_repeater.this(:future)
@@ -46,7 +46,7 @@ module Chronic
46
46
  this_fortnight_end = this_sunday_span.begin
47
47
  Span.new(this_fortnight_start, this_fortnight_end)
48
48
  when :past
49
- this_fortnight_end = Time.construct(@now.year, @now.month, @now.day, @now.hour)
49
+ this_fortnight_end = Chronic.construct(@now.year, @now.month, @now.day, @now.hour)
50
50
  sunday_repeater = RepeaterDayName.new(:sunday)
51
51
  sunday_repeater.start = @now
52
52
  last_sunday_span = sunday_repeater.next(:past)
@@ -12,9 +12,9 @@ module Chronic
12
12
  if !@current_hour_start
13
13
  case pointer
14
14
  when :future
15
- @current_hour_start = Time.construct(@now.year, @now.month, @now.day, @now.hour + 1)
15
+ @current_hour_start = Chronic.construct(@now.year, @now.month, @now.day, @now.hour + 1)
16
16
  when :past
17
- @current_hour_start = Time.construct(@now.year, @now.month, @now.day, @now.hour - 1)
17
+ @current_hour_start = Chronic.construct(@now.year, @now.month, @now.day, @now.hour - 1)
18
18
  end
19
19
  else
20
20
  direction = pointer == :future ? 1 : -1
@@ -29,13 +29,13 @@ module Chronic
29
29
 
30
30
  case pointer
31
31
  when :future
32
- hour_start = Time.construct(@now.year, @now.month, @now.day, @now.hour, @now.min + 1)
33
- hour_end = Time.construct(@now.year, @now.month, @now.day, @now.hour + 1)
32
+ hour_start = Chronic.construct(@now.year, @now.month, @now.day, @now.hour, @now.min + 1)
33
+ hour_end = Chronic.construct(@now.year, @now.month, @now.day, @now.hour + 1)
34
34
  when :past
35
- hour_start = Time.construct(@now.year, @now.month, @now.day, @now.hour)
36
- hour_end = Time.construct(@now.year, @now.month, @now.day, @now.hour, @now.min)
35
+ hour_start = Chronic.construct(@now.year, @now.month, @now.day, @now.hour)
36
+ hour_end = Chronic.construct(@now.year, @now.month, @now.day, @now.hour, @now.min)
37
37
  when :none
38
- hour_start = Time.construct(@now.year, @now.month, @now.day, @now.hour)
38
+ hour_start = Chronic.construct(@now.year, @now.month, @now.day, @now.hour)
39
39
  hour_end = hour_start + HOUR_SECONDS
40
40
  end
41
41
 
@@ -12,9 +12,9 @@ module Chronic
12
12
  if !@current_minute_start
13
13
  case pointer
14
14
  when :future
15
- @current_minute_start = Time.construct(@now.year, @now.month, @now.day, @now.hour, @now.min + 1)
15
+ @current_minute_start = Chronic.construct(@now.year, @now.month, @now.day, @now.hour, @now.min + 1)
16
16
  when :past
17
- @current_minute_start = Time.construct(@now.year, @now.month, @now.day, @now.hour, @now.min - 1)
17
+ @current_minute_start = Chronic.construct(@now.year, @now.month, @now.day, @now.hour, @now.min - 1)
18
18
  end
19
19
  else
20
20
  direction = pointer == :future ? 1 : -1
@@ -30,13 +30,13 @@ module Chronic
30
30
  case pointer
31
31
  when :future
32
32
  minute_begin = @now
33
- minute_end = Time.construct(@now.year, @now.month, @now.day, @now.hour, @now.min)
33
+ minute_end = Chronic.construct(@now.year, @now.month, @now.day, @now.hour, @now.min)
34
34
  when :past
35
- minute_begin = Time.construct(@now.year, @now.month, @now.day, @now.hour, @now.min)
35
+ minute_begin = Chronic.construct(@now.year, @now.month, @now.day, @now.hour, @now.min)
36
36
  minute_end = @now
37
37
  when :none
38
- minute_begin = Time.construct(@now.year, @now.month, @now.day, @now.hour, @now.min)
39
- minute_end = Time.construct(@now.year, @now.month, @now.day, @now.hour, @now.min) + MINUTE_SECONDS
38
+ minute_begin = Chronic.construct(@now.year, @now.month, @now.day, @now.hour, @now.min)
39
+ minute_end = Chronic.construct(@now.year, @now.month, @now.day, @now.hour, @now.min) + MINUTE_SECONDS
40
40
  end
41
41
 
42
42
  Span.new(minute_begin, minute_end)
@@ -13,12 +13,12 @@ module Chronic
13
13
  super
14
14
 
15
15
  if !@current_month_start
16
- @current_month_start = offset_by(Time.construct(@now.year, @now.month), 1, pointer)
16
+ @current_month_start = offset_by(Chronic.construct(@now.year, @now.month), 1, pointer)
17
17
  else
18
- @current_month_start = offset_by(Time.construct(@current_month_start.year, @current_month_start.month), 1, pointer)
18
+ @current_month_start = offset_by(Chronic.construct(@current_month_start.year, @current_month_start.month), 1, pointer)
19
19
  end
20
20
 
21
- Span.new(@current_month_start, Time.construct(@current_month_start.year, @current_month_start.month + 1))
21
+ Span.new(@current_month_start, Chronic.construct(@current_month_start.year, @current_month_start.month + 1))
22
22
  end
23
23
 
24
24
  def this(pointer = :future)
@@ -26,14 +26,14 @@ module Chronic
26
26
 
27
27
  case pointer
28
28
  when :future
29
- month_start = Time.construct(@now.year, @now.month, @now.day + 1)
30
- month_end = self.offset_by(Time.construct(@now.year, @now.month), 1, :future)
29
+ month_start = Chronic.construct(@now.year, @now.month, @now.day + 1)
30
+ month_end = self.offset_by(Chronic.construct(@now.year, @now.month), 1, :future)
31
31
  when :past
32
- month_start = Time.construct(@now.year, @now.month)
33
- month_end = Time.construct(@now.year, @now.month, @now.day)
32
+ month_start = Chronic.construct(@now.year, @now.month)
33
+ month_end = Chronic.construct(@now.year, @now.month, @now.day)
34
34
  when :none
35
- month_start = Time.construct(@now.year, @now.month)
36
- month_end = self.offset_by(Time.construct(@now.year, @now.month), 1, :future)
35
+ month_start = Chronic.construct(@now.year, @now.month)
36
+ month_end = self.offset_by(Chronic.construct(@now.year, @now.month), 1, :future)
37
37
  end
38
38
 
39
39
  Span.new(month_start, month_end)
@@ -59,7 +59,7 @@ module Chronic
59
59
  days = month_days(new_year, new_month)
60
60
  new_day = time.day > days ? days : time.day
61
61
 
62
- Time.construct(new_year, new_month, new_day, time.hour, time.min, time.sec)
62
+ Chronic.construct(new_year, new_month, new_day, time.hour, time.min, time.sec)
63
63
  end
64
64
 
65
65
  def width
@@ -27,30 +27,30 @@ module Chronic
27
27
  case pointer
28
28
  when :future
29
29
  if @now.month < index
30
- @current_month_begin = Time.construct(@now.year, index)
30
+ @current_month_begin = Chronic.construct(@now.year, index)
31
31
  elsif @now.month > index
32
- @current_month_begin = Time.construct(@now.year + 1, index)
32
+ @current_month_begin = Chronic.construct(@now.year + 1, index)
33
33
  end
34
34
  when :none
35
35
  if @now.month <= index
36
- @current_month_begin = Time.construct(@now.year, index)
36
+ @current_month_begin = Chronic.construct(@now.year, index)
37
37
  elsif @now.month > index
38
- @current_month_begin = Time.construct(@now.year + 1, index)
38
+ @current_month_begin = Chronic.construct(@now.year + 1, index)
39
39
  end
40
40
  when :past
41
41
  if @now.month >= index
42
- @current_month_begin = Time.construct(@now.year, index)
42
+ @current_month_begin = Chronic.construct(@now.year, index)
43
43
  elsif @now.month < index
44
- @current_month_begin = Time.construct(@now.year - 1, index)
44
+ @current_month_begin = Chronic.construct(@now.year - 1, index)
45
45
  end
46
46
  end
47
47
  @current_month_begin || raise("Current month should be set by now")
48
48
  else
49
49
  case pointer
50
50
  when :future
51
- @current_month_begin = Time.construct(@current_month_begin.year + 1, @current_month_begin.month)
51
+ @current_month_begin = Chronic.construct(@current_month_begin.year + 1, @current_month_begin.month)
52
52
  when :past
53
- @current_month_begin = Time.construct(@current_month_begin.year - 1, @current_month_begin.month)
53
+ @current_month_begin = Chronic.construct(@current_month_begin.year - 1, @current_month_begin.month)
54
54
  end
55
55
  end
56
56
 
@@ -65,7 +65,7 @@ module Chronic
65
65
  next_month_month = cur_month_month + 1
66
66
  end
67
67
 
68
- Span.new(@current_month_begin, Time.construct(next_month_year, next_month_month))
68
+ Span.new(@current_month_begin, Chronic.construct(next_month_year, next_month_month))
69
69
  end
70
70
 
71
71
  def this(pointer = :future)
@@ -16,7 +16,7 @@ module Chronic
16
16
  super
17
17
 
18
18
  direction = pointer == :future ? 1 : -1
19
- next_season = Season.find_next_season(find_current_season(@now.to_minidate), direction)
19
+ next_season = Season.find_next_season(find_current_season(MiniDate.from_time(@now)), direction)
20
20
 
21
21
  find_next_season_span(direction, next_season)
22
22
  end
@@ -26,8 +26,8 @@ module Chronic
26
26
 
27
27
  direction = pointer == :future ? 1 : -1
28
28
 
29
- today = Time.construct(@now.year, @now.month, @now.day)
30
- this_ssn = find_current_season(@now.to_minidate)
29
+ today = Chronic.construct(@now.year, @now.month, @now.day)
30
+ this_ssn = find_current_season(MiniDate.from_time(@now))
31
31
  case pointer
32
32
  when :past
33
33
  this_ssn_start = today + direction * num_seconds_til_start(this_ssn, direction)
@@ -63,9 +63,9 @@ module Chronic
63
63
  private
64
64
 
65
65
  def find_next_season_span(direction, next_season)
66
- if !@next_season_start or !@next_season_end
67
- @next_season_start = Time.construct(@now.year, @now.month, @now.day)
68
- @next_season_end = Time.construct(@now.year, @now.month, @now.day)
66
+ unless @next_season_start or @next_season_end
67
+ @next_season_start = Chronic.construct(@now.year, @now.month, @now.day)
68
+ @next_season_end = Chronic.construct(@now.year, @now.month, @now.day)
69
69
  end
70
70
 
71
71
  @next_season_start += direction * num_seconds_til_start(next_season, direction)
@@ -81,10 +81,10 @@ module Chronic
81
81
  end
82
82
 
83
83
  def num_seconds_til(goal, direction)
84
- start = Time.construct(@now.year, @now.month, @now.day)
84
+ start = Chronic.construct(@now.year, @now.month, @now.day)
85
85
  seconds = 0
86
86
 
87
- until (start + direction * seconds).to_minidate.equals?(goal)
87
+ until MiniDate.from_time(start + direction * seconds).equals?(goal)
88
88
  seconds += RepeaterDay::DAY_SECONDS
89
89
  end
90
90
 
@@ -101,8 +101,8 @@ module Chronic
101
101
 
102
102
  def construct_season(start, finish)
103
103
  Span.new(
104
- Time.construct(start.year, start.month, start.day),
105
- Time.construct(finish.year, finish.month, finish.day)
104
+ Chronic.construct(start.year, start.month, start.day),
105
+ Chronic.construct(finish.year, finish.month, finish.day)
106
106
  )
107
107
  end
108
108
  end
@@ -11,10 +11,10 @@ module Chronic
11
11
  def this(pointer = :future)
12
12
  direction = pointer == :future ? 1 : -1
13
13
 
14
- today = Time.construct(@now.year, @now.month, @now.day)
14
+ today = Chronic.construct(@now.year, @now.month, @now.day)
15
15
  goal_ssn_start = today + direction * num_seconds_til_start(@type, direction)
16
16
  goal_ssn_end = today + direction * num_seconds_til_end(@type, direction)
17
- curr_ssn = find_current_season(@now.to_minidate)
17
+ curr_ssn = find_current_season(MiniDate.from_time(@now))
18
18
  case pointer
19
19
  when :past
20
20
  this_ssn_start = goal_ssn_start
@@ -21,7 +21,7 @@ module Chronic
21
21
  direction = pointer == :future ? 1 : -1
22
22
 
23
23
  if !@current_weekday_start
24
- @current_weekday_start = Time.construct(@now.year, @now.month, @now.day)
24
+ @current_weekday_start = Chronic.construct(@now.year, @now.month, @now.day)
25
25
  @current_weekday_start += direction * DAY_SECONDS
26
26
 
27
27
  until is_weekday?(@current_weekday_start.wday)
@@ -12,16 +12,16 @@ module Chronic
12
12
  if !@current_year_start
13
13
  case pointer
14
14
  when :future
15
- @current_year_start = Time.construct(@now.year + 1)
15
+ @current_year_start = Chronic.construct(@now.year + 1)
16
16
  when :past
17
- @current_year_start = Time.construct(@now.year - 1)
17
+ @current_year_start = Chronic.construct(@now.year - 1)
18
18
  end
19
19
  else
20
20
  diff = pointer == :future ? 1 : -1
21
- @current_year_start = Time.construct(@current_year_start.year + diff)
21
+ @current_year_start = Chronic.construct(@current_year_start.year + diff)
22
22
  end
23
23
 
24
- Span.new(@current_year_start, Time.construct(@current_year_start.year + 1))
24
+ Span.new(@current_year_start, Chronic.construct(@current_year_start.year + 1))
25
25
  end
26
26
 
27
27
  def this(pointer = :future)
@@ -29,14 +29,14 @@ module Chronic
29
29
 
30
30
  case pointer
31
31
  when :future
32
- this_year_start = Time.construct(@now.year, @now.month, @now.day) + RepeaterDay::DAY_SECONDS
33
- this_year_end = Time.construct(@now.year + 1, 1, 1)
32
+ this_year_start = Chronic.construct(@now.year, @now.month, @now.day) + RepeaterDay::DAY_SECONDS
33
+ this_year_end = Chronic.construct(@now.year + 1, 1, 1)
34
34
  when :past
35
- this_year_start = Time.construct(@now.year, 1, 1)
36
- this_year_end = Time.construct(@now.year, @now.month, @now.day)
35
+ this_year_start = Chronic.construct(@now.year, 1, 1)
36
+ this_year_end = Chronic.construct(@now.year, @now.month, @now.day)
37
37
  when :none
38
- this_year_start = Time.construct(@now.year, 1, 1)
39
- this_year_end = Time.construct(@now.year + 1, 1, 1)
38
+ this_year_start = Chronic.construct(@now.year, 1, 1)
39
+ this_year_end = Chronic.construct(@now.year + 1, 1, 1)
40
40
  end
41
41
 
42
42
  Span.new(this_year_start, this_year_end)
@@ -63,7 +63,7 @@ module Chronic
63
63
  year = time.year + (amount * direction)
64
64
  days = month_days(year, time.month)
65
65
  day = time.day > days ? days : time.day
66
- Time.construct(year, time.month, day, time.hour, time.min, time.sec)
66
+ Chronic.construct(year, time.month, day, time.hour, time.min, time.sec)
67
67
  end
68
68
 
69
69
  def month_days(year, month)