Skip to content

Instantly share code, notes, and snippets.

@benlangfeld
Created January 13, 2011 22:53
Show Gist options
  • Save benlangfeld/778780 to your computer and use it in GitHub Desktop.
Save benlangfeld/778780 to your computer and use it in GitHub Desktop.
class IntervalArray < Array
attr_reader :range, :step_size
def initialize(range, step_size = 1)
super()
@range = range
@step_size = step_size
regenerate
end
def range=(range)
@range = range
regenerate
end
def step_size=(step_size)
@step_size = step_size
regenerate
end
private
def regenerate
clear
self << @range.min
num_elements = (@range.count - 1) / @step_size
while count <= num_elements
self << last + @step_size
end
end
end
class Range
def in_steps_of(n = 1)
IntervalArray.new self, n
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment