ice_cube 0.11.0 → 0.11.1
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 +7 -0
- data/lib/ice_cube.rb +0 -11
- data/lib/ice_cube/builders/string_builder.rb +15 -23
- data/lib/ice_cube/deprecated.rb +26 -24
- data/lib/ice_cube/enumerator.rb +1 -3
- data/lib/ice_cube/hash_input.rb +71 -0
- data/lib/ice_cube/rule.rb +4 -6
- data/lib/ice_cube/rules/daily_rule.rb +1 -1
- data/lib/ice_cube/rules/hourly_rule.rb +1 -1
- data/lib/ice_cube/rules/minutely_rule.rb +1 -1
- data/lib/ice_cube/rules/monthly_rule.rb +1 -1
- data/lib/ice_cube/rules/secondly_rule.rb +1 -1
- data/lib/ice_cube/rules/yearly_rule.rb +1 -1
- data/lib/ice_cube/schedule.rb +4 -4
- data/lib/ice_cube/string_helpers.rb +10 -0
- data/lib/ice_cube/time_util.rb +14 -5
- data/lib/ice_cube/validations/count.rb +4 -6
- data/lib/ice_cube/validations/daily_interval.rb +13 -18
- data/lib/ice_cube/validations/day.rb +4 -4
- data/lib/ice_cube/validations/day_of_month.rb +8 -10
- data/lib/ice_cube/validations/day_of_week.rb +24 -26
- data/lib/ice_cube/validations/day_of_year.rb +11 -12
- data/lib/ice_cube/validations/hour_of_day.rb +9 -11
- data/lib/ice_cube/validations/hourly_interval.rb +18 -21
- data/lib/ice_cube/validations/lock.rb +35 -14
- data/lib/ice_cube/validations/minute_of_hour.rb +9 -11
- data/lib/ice_cube/validations/minutely_interval.rb +16 -19
- data/lib/ice_cube/validations/month_of_year.rb +4 -4
- data/lib/ice_cube/validations/monthly_interval.rb +15 -17
- data/lib/ice_cube/validations/schedule_lock.rb +12 -11
- data/lib/ice_cube/validations/second_of_minute.rb +5 -5
- data/lib/ice_cube/validations/secondly_interval.rb +13 -16
- data/lib/ice_cube/validations/until.rb +12 -12
- data/lib/ice_cube/validations/weekly_interval.rb +20 -23
- data/lib/ice_cube/validations/yearly_interval.rb +10 -11
- data/lib/ice_cube/version.rb +1 -1
- metadata +20 -33
| @@ -13,6 +13,10 @@ module IceCube | |
| 13 13 |  | 
| 14 14 | 
             
                  attr_reader :interval
         | 
| 15 15 |  | 
| 16 | 
            +
                  def initialize(interval)
         | 
| 17 | 
            +
                    @interval = interval
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 16 20 | 
             
                  def type
         | 
| 17 21 | 
             
                    :min
         | 
| 18 22 | 
             
                  end
         | 
| @@ -21,33 +25,26 @@ module IceCube | |
| 21 25 | 
             
                    false
         | 
| 22 26 | 
             
                  end
         | 
| 23 27 |  | 
| 24 | 
            -
                  def  | 
| 25 | 
            -
                     | 
| 28 | 
            +
                  def validate(step_time, schedule)
         | 
| 29 | 
            +
                    t0, t1 = schedule.start_time.to_i, step_time.to_i
         | 
| 30 | 
            +
                    sec = (t1 - t1 % ONE_MINUTE) -
         | 
| 31 | 
            +
                          (t0 - t0 % ONE_MINUTE)
         | 
| 32 | 
            +
                    minutes = sec / ONE_MINUTE
         | 
| 33 | 
            +
                    offset = (minutes % interval).nonzero?
         | 
| 34 | 
            +
                    interval - offset if offset
         | 
| 26 35 | 
             
                  end
         | 
| 27 36 |  | 
| 28 | 
            -
                  def  | 
| 29 | 
            -
                    builder | 
| 30 | 
            -
                    unless interval == 1
         | 
| 31 | 
            -
                      builder['INTERVAL'] << interval
         | 
| 32 | 
            -
                    end
         | 
| 37 | 
            +
                  def build_s(builder)
         | 
| 38 | 
            +
                    builder.base = interval == 1 ? 'Minutely' : "Every #{interval} minutes"
         | 
| 33 39 | 
             
                  end
         | 
| 34 40 |  | 
| 35 41 | 
             
                  def build_hash(builder)
         | 
| 36 42 | 
             
                    builder[:interval] = interval
         | 
| 37 43 | 
             
                  end
         | 
| 38 44 |  | 
| 39 | 
            -
                  def  | 
| 40 | 
            -
                     | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
                  def validate(time, schedule)
         | 
| 44 | 
            -
                    start_time = schedule.start_time
         | 
| 45 | 
            -
                    sec = (time.to_i - time.to_i % ONE_MINUTE) -
         | 
| 46 | 
            -
                      (start_time.to_i - start_time.to_i % ONE_MINUTE)
         | 
| 47 | 
            -
                    minutes = sec / ONE_MINUTE
         | 
| 48 | 
            -
                    unless minutes % interval == 0
         | 
| 49 | 
            -
                      interval - (minutes % interval)
         | 
| 50 | 
            -
                    end
         | 
| 45 | 
            +
                  def build_ical(builder)
         | 
| 46 | 
            +
                    builder['FREQ'] << 'MINUTELY'
         | 
| 47 | 
            +
                    builder['INTERVAL'] << interval unless interval == 1
         | 
| 51 48 | 
             
                  end
         | 
| 52 49 |  | 
| 53 50 | 
             
                end
         | 
| @@ -25,6 +25,10 @@ module IceCube | |
| 25 25 | 
             
                    @month = month
         | 
| 26 26 | 
             
                  end
         | 
| 27 27 |  | 
| 28 | 
            +
                  def type
         | 
| 29 | 
            +
                    :month
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
             | 
| 28 32 | 
             
                  def build_s(builder)
         | 
| 29 33 | 
             
                    builder.piece(:month_of_year) << Date::MONTHNAMES[month]
         | 
| 30 34 | 
             
                  end
         | 
| @@ -37,10 +41,6 @@ module IceCube | |
| 37 41 | 
             
                    builder['BYMONTH'] << month
         | 
| 38 42 | 
             
                  end
         | 
| 39 43 |  | 
| 40 | 
            -
                  def type
         | 
| 41 | 
            -
                    :month
         | 
| 42 | 
            -
                  end
         | 
| 43 | 
            -
             | 
| 44 44 | 
             
                  StringBuilder.register_formatter(:month_of_year) do |segments|
         | 
| 45 45 | 
             
                    "in #{StringBuilder.sentence(segments)}"
         | 
| 46 46 | 
             
                  end
         | 
| @@ -13,35 +13,33 @@ module IceCube | |
| 13 13 |  | 
| 14 14 | 
             
                  attr_reader :interval
         | 
| 15 15 |  | 
| 16 | 
            +
                  def initialize(interval)
         | 
| 17 | 
            +
                    @interval = interval
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 16 20 | 
             
                  def type
         | 
| 17 21 | 
             
                    :month
         | 
| 18 22 | 
             
                  end
         | 
| 19 23 |  | 
| 20 | 
            -
                  def  | 
| 21 | 
            -
                     | 
| 24 | 
            +
                  def validate(step_time, schedule)
         | 
| 25 | 
            +
                    t0, t1 = schedule.start_time, step_time
         | 
| 26 | 
            +
                    months = (t1.month - t0.month) +
         | 
| 27 | 
            +
                             (t1.year - t0.year) * 12
         | 
| 28 | 
            +
                    offset = (months % interval).nonzero?
         | 
| 29 | 
            +
                    interval - offset if offset
         | 
| 22 30 | 
             
                  end
         | 
| 23 31 |  | 
| 24 | 
            -
                  def  | 
| 25 | 
            -
                    builder | 
| 26 | 
            -
                    unless interval == 1
         | 
| 27 | 
            -
                      builder['INTERVAL'] << interval
         | 
| 28 | 
            -
                    end
         | 
| 32 | 
            +
                  def build_s(builder)
         | 
| 33 | 
            +
                    builder.base = interval == 1 ? 'Monthly' : "Every #{interval} months"
         | 
| 29 34 | 
             
                  end
         | 
| 30 35 |  | 
| 31 36 | 
             
                  def build_hash(builder)
         | 
| 32 37 | 
             
                    builder[:interval] = interval
         | 
| 33 38 | 
             
                  end
         | 
| 34 39 |  | 
| 35 | 
            -
                  def  | 
| 36 | 
            -
                     | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
                  def validate(time, schedule)
         | 
| 40 | 
            -
                    start_time = schedule.start_time
         | 
| 41 | 
            -
                    months_to_start = (time.month - start_time.month) + (time.year - start_time.year) * 12
         | 
| 42 | 
            -
                    unless months_to_start % interval == 0
         | 
| 43 | 
            -
                      interval - (months_to_start % interval)
         | 
| 44 | 
            -
                    end
         | 
| 40 | 
            +
                  def build_ical(builder)
         | 
| 41 | 
            +
                    builder['FREQ'] << 'MONTHLY'
         | 
| 42 | 
            +
                    builder['INTERVAL'] << interval unless interval == 1
         | 
| 45 43 | 
             
                  end
         | 
| 46 44 |  | 
| 47 45 | 
             
                end
         | 
| @@ -2,16 +2,16 @@ module IceCube | |
| 2 2 |  | 
| 3 3 | 
             
              module Validations::ScheduleLock
         | 
| 4 4 |  | 
| 5 | 
            -
                # Lock the given  | 
| 5 | 
            +
                # Lock the given time units to the units from schedule's +start_time+
         | 
| 6 6 | 
             
                # These locks are all clobberable by other rules of the same #type
         | 
| 7 | 
            -
                # using clobber_base_validation
         | 
| 7 | 
            +
                # using +clobber_base_validation+
         | 
| 8 | 
            +
                #
         | 
| 8 9 | 
             
                def schedule_lock(*types)
         | 
| 9 10 | 
             
                  types.each do |type|
         | 
| 10 11 | 
             
                    validations_for(:"base_#{type}") << Validation.new(type)
         | 
| 11 12 | 
             
                  end
         | 
| 12 13 | 
             
                end
         | 
| 13 14 |  | 
| 14 | 
            -
                # A validation used for locking time into a certain value
         | 
| 15 15 | 
             
                class Validation
         | 
| 16 16 |  | 
| 17 17 | 
             
                  include Validations::Lock
         | 
| @@ -22,24 +22,25 @@ module IceCube | |
| 22 22 | 
             
                    @type = type
         | 
| 23 23 | 
             
                  end
         | 
| 24 24 |  | 
| 25 | 
            -
                   | 
| 26 | 
            -
             | 
| 25 | 
            +
                  def dst_adjust?
         | 
| 26 | 
            +
                    case @type
         | 
| 27 | 
            +
                    when :sec, :min then false
         | 
| 28 | 
            +
                    else true
         | 
| 29 | 
            +
                    end
         | 
| 27 30 | 
             
                  end
         | 
| 28 31 |  | 
| 29 32 | 
             
                  # no -op
         | 
| 30 | 
            -
                  def  | 
| 33 | 
            +
                  def build_s(builder)
         | 
| 31 34 | 
             
                  end
         | 
| 32 35 |  | 
| 33 36 | 
             
                  # no -op
         | 
| 34 37 | 
             
                  def build_hash(builder)
         | 
| 35 38 | 
             
                  end
         | 
| 36 39 |  | 
| 37 | 
            -
                   | 
| 38 | 
            -
             | 
| 39 | 
            -
                    when :sec, :min then false
         | 
| 40 | 
            -
                    else true
         | 
| 41 | 
            -
                    end
         | 
| 40 | 
            +
                  # no -op
         | 
| 41 | 
            +
                  def build_ical(builder)
         | 
| 42 42 | 
             
                  end
         | 
| 43 | 
            +
             | 
| 43 44 | 
             
                end
         | 
| 44 45 |  | 
| 45 46 | 
             
              end
         | 
| @@ -17,11 +17,6 @@ module IceCube | |
| 17 17 |  | 
| 18 18 | 
             
                  include Validations::Lock
         | 
| 19 19 |  | 
| 20 | 
            -
                  StringBuilder.register_formatter(:second_of_minute) do |segments|
         | 
| 21 | 
            -
                    str = "on the #{StringBuilder.sentence(segments)} "
         | 
| 22 | 
            -
                    str << (segments.size == 1 ? 'second of the minute' : 'seconds of the minute')
         | 
| 23 | 
            -
                  end
         | 
| 24 | 
            -
             | 
| 25 20 | 
             
                  attr_reader :second
         | 
| 26 21 | 
             
                  alias :value :second
         | 
| 27 22 |  | 
| @@ -45,6 +40,11 @@ module IceCube | |
| 45 40 | 
             
                    builder['BYSECOND'] << second
         | 
| 46 41 | 
             
                  end
         | 
| 47 42 |  | 
| 43 | 
            +
                  StringBuilder.register_formatter(:second_of_minute) do |segments|
         | 
| 44 | 
            +
                    str = "on the #{StringBuilder.sentence(segments)} "
         | 
| 45 | 
            +
                    str << (segments.size == 1 ? 'second of the minute' : 'seconds of the minute')
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
             | 
| 48 48 | 
             
                end
         | 
| 49 49 |  | 
| 50 50 | 
             
              end
         | 
| @@ -13,6 +13,10 @@ module IceCube | |
| 13 13 |  | 
| 14 14 | 
             
                  attr_reader :interval
         | 
| 15 15 |  | 
| 16 | 
            +
                  def initialize(interval)
         | 
| 17 | 
            +
                    @interval = interval
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 16 20 | 
             
                  def type
         | 
| 17 21 | 
             
                    :sec
         | 
| 18 22 | 
             
                  end
         | 
| @@ -21,30 +25,23 @@ module IceCube | |
| 21 25 | 
             
                    false
         | 
| 22 26 | 
             
                  end
         | 
| 23 27 |  | 
| 24 | 
            -
                  def  | 
| 25 | 
            -
                     | 
| 28 | 
            +
                  def validate(step_time, schedule)
         | 
| 29 | 
            +
                    seconds = step_time.to_i - schedule.start_time.to_i
         | 
| 30 | 
            +
                    offset = (seconds % interval).nonzero?
         | 
| 31 | 
            +
                    interval - offset if offset
         | 
| 26 32 | 
             
                  end
         | 
| 27 33 |  | 
| 28 | 
            -
                  def  | 
| 29 | 
            -
                    builder | 
| 30 | 
            -
                    unless interval == 1
         | 
| 31 | 
            -
                      builder['INTERVAL'] << interval
         | 
| 32 | 
            -
                    end
         | 
| 34 | 
            +
                  def build_s(builder)
         | 
| 35 | 
            +
                    builder.base = interval == 1 ? 'Secondly' : "Every #{interval} seconds"
         | 
| 33 36 | 
             
                  end
         | 
| 34 37 |  | 
| 35 38 | 
             
                  def build_hash(builder)
         | 
| 36 39 | 
             
                    builder[:interval] = interval
         | 
| 37 40 | 
             
                  end
         | 
| 38 41 |  | 
| 39 | 
            -
                  def  | 
| 40 | 
            -
                     | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
                  def validate(time, schedule)
         | 
| 44 | 
            -
                    seconds = time.to_i - schedule.start_time.to_i
         | 
| 45 | 
            -
                    unless seconds % interval == 0
         | 
| 46 | 
            -
                      interval - (seconds % interval)
         | 
| 47 | 
            -
                    end
         | 
| 42 | 
            +
                  def build_ical(builder)
         | 
| 43 | 
            +
                    builder['FREQ'] << 'SECONDLY'
         | 
| 44 | 
            +
                    builder['INTERVAL'] << interval unless interval == 1
         | 
| 48 45 | 
             
                  end
         | 
| 49 46 |  | 
| 50 47 | 
             
                end
         | 
| @@ -2,9 +2,9 @@ module IceCube | |
| 2 2 |  | 
| 3 3 | 
             
              module Validations::Until
         | 
| 4 4 |  | 
| 5 | 
            -
                extend  | 
| 5 | 
            +
                extend Deprecated
         | 
| 6 6 |  | 
| 7 | 
            -
                #  | 
| 7 | 
            +
                # Value reader for limit
         | 
| 8 8 | 
             
                def until_time
         | 
| 9 9 | 
             
                  @until
         | 
| 10 10 | 
             
                end
         | 
| @@ -21,28 +21,28 @@ module IceCube | |
| 21 21 |  | 
| 22 22 | 
             
                  attr_reader :time
         | 
| 23 23 |  | 
| 24 | 
            -
                  def type
         | 
| 25 | 
            -
                    :dealbreaker
         | 
| 26 | 
            -
                  end
         | 
| 27 | 
            -
             | 
| 28 24 | 
             
                  def initialize(time)
         | 
| 29 25 | 
             
                    @time = time
         | 
| 30 26 | 
             
                  end
         | 
| 31 27 |  | 
| 32 | 
            -
                  def  | 
| 33 | 
            -
                     | 
| 28 | 
            +
                  def type
         | 
| 29 | 
            +
                    :limit
         | 
| 34 30 | 
             
                  end
         | 
| 35 31 |  | 
| 36 | 
            -
                  def  | 
| 37 | 
            -
                     | 
| 32 | 
            +
                  def validate(step_time, schedule)
         | 
| 33 | 
            +
                    raise UntilExceeded if step_time > time
         | 
| 38 34 | 
             
                  end
         | 
| 39 35 |  | 
| 40 36 | 
             
                  def build_s(builder)
         | 
| 41 37 | 
             
                    builder.piece(:until) << "until #{time.strftime(IceCube.to_s_time_format)}"
         | 
| 42 38 | 
             
                  end
         | 
| 43 39 |  | 
| 44 | 
            -
                  def  | 
| 45 | 
            -
                     | 
| 40 | 
            +
                  def build_hash(builder)
         | 
| 41 | 
            +
                    builder[:until] = TimeUtil.serialize_time(time)
         | 
| 42 | 
            +
                  end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                  def build_ical(builder)
         | 
| 45 | 
            +
                    builder['UNTIL'] << IcalBuilder.ical_utc_format(time)
         | 
| 46 46 | 
             
                  end
         | 
| 47 47 |  | 
| 48 48 | 
             
                end
         | 
| @@ -20,20 +20,27 @@ module IceCube | |
| 20 20 |  | 
| 21 21 | 
             
                  attr_reader :interval, :week_start
         | 
| 22 22 |  | 
| 23 | 
            +
                  def initialize(interval, week_start)
         | 
| 24 | 
            +
                    @interval = interval
         | 
| 25 | 
            +
                    @week_start = week_start
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 23 28 | 
             
                  def type
         | 
| 24 29 | 
             
                    :day
         | 
| 25 30 | 
             
                  end
         | 
| 26 31 |  | 
| 27 | 
            -
                  def  | 
| 28 | 
            -
                     | 
| 32 | 
            +
                  def validate(step_time, schedule)
         | 
| 33 | 
            +
                    t0, t1 = schedule.start_time, step_time
         | 
| 34 | 
            +
                    d0 = Date.new(t0.year, t0.month, t0.day)
         | 
| 35 | 
            +
                    d1 = Date.new(t1.year, t1.month, t1.day)
         | 
| 36 | 
            +
                    days = (d1 - TimeUtil.normalize_wday(d1.wday, week_start)) -
         | 
| 37 | 
            +
                           (d0 - TimeUtil.normalize_wday(d0.wday, week_start))
         | 
| 38 | 
            +
                    offset = ((days / 7) % interval).nonzero?
         | 
| 39 | 
            +
                    (interval - offset) * 7 if offset
         | 
| 29 40 | 
             
                  end
         | 
| 30 41 |  | 
| 31 | 
            -
                  def  | 
| 32 | 
            -
                    builder | 
| 33 | 
            -
                    unless interval == 1
         | 
| 34 | 
            -
                      builder['INTERVAL'] << interval
         | 
| 35 | 
            -
                      builder['WKST'] << week_start.to_s.upcase[0..1]
         | 
| 36 | 
            -
                    end
         | 
| 42 | 
            +
                  def build_s(builder)
         | 
| 43 | 
            +
                    builder.base = interval == 1 ? 'Weekly' : "Every #{interval} weeks"
         | 
| 37 44 | 
             
                  end
         | 
| 38 45 |  | 
| 39 46 | 
             
                  def build_hash(builder)
         | 
| @@ -41,21 +48,11 @@ module IceCube | |
| 41 48 | 
             
                    builder[:week_start] = TimeUtil.sym_to_wday(week_start)
         | 
| 42 49 | 
             
                  end
         | 
| 43 50 |  | 
| 44 | 
            -
                  def  | 
| 45 | 
            -
                     | 
| 46 | 
            -
                     | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
                  def validate(time, schedule)
         | 
| 50 | 
            -
                    date = Date.new(time.year, time.month, time.day)
         | 
| 51 | 
            -
                    st = schedule.start_time
         | 
| 52 | 
            -
                    start_date = Date.new(st.year, st.month, st.day)
         | 
| 53 | 
            -
                    weeks = (
         | 
| 54 | 
            -
                      (date - TimeUtil.normalize_wday(date.wday, week_start)) -
         | 
| 55 | 
            -
                      (start_date - TimeUtil.normalize_wday(start_date.wday, week_start))
         | 
| 56 | 
            -
                    ) / 7
         | 
| 57 | 
            -
                    unless weeks % interval == 0
         | 
| 58 | 
            -
                      (interval - (weeks % interval)) * 7
         | 
| 51 | 
            +
                  def build_ical(builder)
         | 
| 52 | 
            +
                    builder['FREQ'] << 'WEEKLY'
         | 
| 53 | 
            +
                    unless interval == 1
         | 
| 54 | 
            +
                      builder['INTERVAL'] << interval
         | 
| 55 | 
            +
                      builder['WKST'] << week_start.to_s.upcase[0..1]
         | 
| 59 56 | 
             
                    end
         | 
| 60 57 | 
             
                  end
         | 
| 61 58 |  | 
| @@ -12,10 +12,20 @@ module IceCube | |
| 12 12 |  | 
| 13 13 | 
             
                  attr_reader :interval
         | 
| 14 14 |  | 
| 15 | 
            +
                  def initialize(interval)
         | 
| 16 | 
            +
                    @interval = interval
         | 
| 17 | 
            +
                  end
         | 
| 18 | 
            +
             | 
| 15 19 | 
             
                  def type
         | 
| 16 20 | 
             
                    :year
         | 
| 17 21 | 
             
                  end
         | 
| 18 22 |  | 
| 23 | 
            +
                  def validate(step_time, schedule)
         | 
| 24 | 
            +
                    years = step_time.year - schedule.start_time.year
         | 
| 25 | 
            +
                    offset = (years % interval).nonzero?
         | 
| 26 | 
            +
                    interval - offset if offset
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
             | 
| 19 29 | 
             
                  def build_s(builder)
         | 
| 20 30 | 
             
                    builder.base = interval == 1 ? 'Yearly' : "Every #{interval} years"
         | 
| 21 31 | 
             
                  end
         | 
| @@ -31,17 +41,6 @@ module IceCube | |
| 31 41 | 
             
                    end
         | 
| 32 42 | 
             
                  end
         | 
| 33 43 |  | 
| 34 | 
            -
                  def initialize(interval)
         | 
| 35 | 
            -
                    @interval = interval
         | 
| 36 | 
            -
                  end
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                  def validate(time, schedule)
         | 
| 39 | 
            -
                    years_to_start = time.year - schedule.start_time.year
         | 
| 40 | 
            -
                    unless years_to_start % interval == 0
         | 
| 41 | 
            -
                      interval - (years_to_start % interval)
         | 
| 42 | 
            -
                    end
         | 
| 43 | 
            -
                  end
         | 
| 44 | 
            -
             | 
| 45 44 | 
             
                end
         | 
| 46 45 |  | 
| 47 46 | 
             
              end
         | 
    
        data/lib/ice_cube/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,78 +1,69 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: ice_cube
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.11. | 
| 5 | 
            -
              prerelease: 
         | 
| 4 | 
            +
              version: 0.11.1
         | 
| 6 5 | 
             
            platform: ruby
         | 
| 7 6 | 
             
            authors:
         | 
| 8 7 | 
             
            - John Crepezzi
         | 
| 9 8 | 
             
            autorequire: 
         | 
| 10 9 | 
             
            bindir: bin
         | 
| 11 10 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2013- | 
| 11 | 
            +
            date: 2013-10-28 00:00:00.000000000 Z
         | 
| 13 12 | 
             
            dependencies:
         | 
| 14 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 14 | 
             
              name: rake
         | 
| 16 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 17 | 
            -
                none: false
         | 
| 18 16 | 
             
                requirements:
         | 
| 19 | 
            -
                - -  | 
| 17 | 
            +
                - - '>='
         | 
| 20 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 21 19 | 
             
                    version: '0'
         | 
| 22 20 | 
             
              type: :development
         | 
| 23 21 | 
             
              prerelease: false
         | 
| 24 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 25 | 
            -
                none: false
         | 
| 26 23 | 
             
                requirements:
         | 
| 27 | 
            -
                - -  | 
| 24 | 
            +
                - - '>='
         | 
| 28 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 29 26 | 
             
                    version: '0'
         | 
| 30 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 31 28 | 
             
              name: rspec
         | 
| 32 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 33 | 
            -
                none: false
         | 
| 34 30 | 
             
                requirements:
         | 
| 35 | 
            -
                - -  | 
| 31 | 
            +
                - - ~>
         | 
| 36 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 37 | 
            -
                    version:  | 
| 33 | 
            +
                    version: 2.12.0
         | 
| 38 34 | 
             
              type: :development
         | 
| 39 35 | 
             
              prerelease: false
         | 
| 40 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 41 | 
            -
                none: false
         | 
| 42 37 | 
             
                requirements:
         | 
| 43 | 
            -
                - -  | 
| 38 | 
            +
                - - ~>
         | 
| 44 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 45 | 
            -
                    version:  | 
| 40 | 
            +
                    version: 2.12.0
         | 
| 46 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 47 42 | 
             
              name: active_support
         | 
| 48 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 49 | 
            -
                none: false
         | 
| 50 44 | 
             
                requirements:
         | 
| 51 | 
            -
                - -  | 
| 45 | 
            +
                - - '>='
         | 
| 52 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 53 47 | 
             
                    version: 3.0.0
         | 
| 54 48 | 
             
              type: :development
         | 
| 55 49 | 
             
              prerelease: false
         | 
| 56 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 57 | 
            -
                none: false
         | 
| 58 51 | 
             
                requirements:
         | 
| 59 | 
            -
                - -  | 
| 52 | 
            +
                - - '>='
         | 
| 60 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 54 | 
             
                    version: 3.0.0
         | 
| 62 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 63 56 | 
             
              name: tzinfo
         | 
| 64 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 65 | 
            -
                none: false
         | 
| 66 58 | 
             
                requirements:
         | 
| 67 | 
            -
                - -  | 
| 59 | 
            +
                - - '>='
         | 
| 68 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 69 61 | 
             
                    version: '0'
         | 
| 70 62 | 
             
              type: :development
         | 
| 71 63 | 
             
              prerelease: false
         | 
| 72 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 73 | 
            -
                none: false
         | 
| 74 65 | 
             
                requirements:
         | 
| 75 | 
            -
                - -  | 
| 66 | 
            +
                - - '>='
         | 
| 76 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 77 68 | 
             
                    version: '0'
         | 
| 78 69 | 
             
            description: ice_cube is a recurring date library for Ruby.  It allows for quick,
         | 
| @@ -90,6 +81,7 @@ files: | |
| 90 81 | 
             
            - lib/ice_cube/errors/count_exceeded.rb
         | 
| 91 82 | 
             
            - lib/ice_cube/errors/until_exceeded.rb
         | 
| 92 83 | 
             
            - lib/ice_cube/flexible_hash.rb
         | 
| 84 | 
            +
            - lib/ice_cube/hash_input.rb
         | 
| 93 85 | 
             
            - lib/ice_cube/occurrence.rb
         | 
| 94 86 | 
             
            - lib/ice_cube/rule.rb
         | 
| 95 87 | 
             
            - lib/ice_cube/rules/daily_rule.rb
         | 
| @@ -101,6 +93,7 @@ files: | |
| 101 93 | 
             
            - lib/ice_cube/rules/yearly_rule.rb
         | 
| 102 94 | 
             
            - lib/ice_cube/schedule.rb
         | 
| 103 95 | 
             
            - lib/ice_cube/single_occurrence_rule.rb
         | 
| 96 | 
            +
            - lib/ice_cube/string_helpers.rb
         | 
| 104 97 | 
             
            - lib/ice_cube/time_step.rb
         | 
| 105 98 | 
             
            - lib/ice_cube/time_util.rb
         | 
| 106 99 | 
             
            - lib/ice_cube/validated_rule.rb
         | 
| @@ -129,33 +122,27 @@ files: | |
| 129 122 | 
             
            homepage: http://seejohnrun.github.com/ice_cube/
         | 
| 130 123 | 
             
            licenses:
         | 
| 131 124 | 
             
            - MIT
         | 
| 125 | 
            +
            metadata: {}
         | 
| 132 126 | 
             
            post_install_message: 
         | 
| 133 127 | 
             
            rdoc_options: []
         | 
| 134 128 | 
             
            require_paths:
         | 
| 135 129 | 
             
            - lib
         | 
| 136 130 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 137 | 
            -
              none: false
         | 
| 138 131 | 
             
              requirements:
         | 
| 139 | 
            -
              - -  | 
| 132 | 
            +
              - - '>='
         | 
| 140 133 | 
             
                - !ruby/object:Gem::Version
         | 
| 141 134 | 
             
                  version: '0'
         | 
| 142 | 
            -
                  segments:
         | 
| 143 | 
            -
                  - 0
         | 
| 144 | 
            -
                  hash: 3343770401458335569
         | 
| 145 135 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 146 | 
            -
              none: false
         | 
| 147 136 | 
             
              requirements:
         | 
| 148 | 
            -
              - -  | 
| 137 | 
            +
              - - '>='
         | 
| 149 138 | 
             
                - !ruby/object:Gem::Version
         | 
| 150 139 | 
             
                  version: '0'
         | 
| 151 | 
            -
                  segments:
         | 
| 152 | 
            -
                  - 0
         | 
| 153 | 
            -
                  hash: 3343770401458335569
         | 
| 154 140 | 
             
            requirements: []
         | 
| 155 141 | 
             
            rubyforge_project: ice-cube
         | 
| 156 | 
            -
            rubygems_version:  | 
| 142 | 
            +
            rubygems_version: 2.0.6
         | 
| 157 143 | 
             
            signing_key: 
         | 
| 158 | 
            -
            specification_version:  | 
| 144 | 
            +
            specification_version: 4
         | 
| 159 145 | 
             
            summary: Ruby Date Recurrence Library
         | 
| 160 146 | 
             
            test_files:
         | 
| 161 147 | 
             
            - spec/spec_helper.rb
         | 
| 148 | 
            +
            has_rdoc: true
         |