Inúmeros intervalos de strings em Ruby

Um trecho que estou usando bastante. Este macaco corrige a Stringclasse com um to_rmétodo, fornecendo a você um Rangeque 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