Um trecho que estou usando bastante. Este macaco corrige a String
classe com um to_r
método, fornecendo a você um Range
que pode ser chamado com enumeradores. Uma vez que usa eval, ele aceita números apenas por segurança.
class String
def to_r
a = self.partition(/(.*?)/)
fail "No range in string" if a[0].empty?
fail "Invalid range #{a}" if a.select { |v| v.match(/[A-Za-z]/) }
eval a[1]
end
def to_r_leading_zero
a = self.partition(/(.*?)/)
fail "No range in string" if a[0].empty?
fail "Invalid range #{a}" if a.select { |v| v.match(/[A-Za-z]/) }
r = eval a[1]
if r.first.to_s.size == 1
eval "'#{"0" + r.first.to_s}'..'#{r.last.to_s}'"
end
end
end