def step limit, step=1
      return to_enum(:step, limit, step) unless block_given?

      date = self
      comp_op = %w(== <= >=)[step <=> 0]
      while date.send comp_op, limit
        yield date
        date += step
      end
      self
    end
def step limit, step=1
      return to_enum(:step, limit, step) unless block_given?

      date = self
      comp_op = %w(== <= >=)[step <=> 0]
      while date.send comp_op, limit
        yield date
        date += step
      end
      self
    end
Step the current date forward +step+ days at a time (or backward, if +step+ is
 negative) until we reach +limit+ (inclusive), yielding the resultant date at each step.