From: "charliesome (Charlie Somerville)" Date: 2012-12-17T14:43:25+09:00 Subject: [ruby-core:50936] [ruby-trunk - Feature #7580][Open] Range translation Issue #7580 has been reported by charliesome (Charlie Somerville). ---------------------------------------- Feature #7580: Range translation https://bugs.ruby-lang.org/issues/7580 Author: charliesome (Charlie Somerville) Status: Open Priority: Normal Assignee: Category: Target version: =begin I would like to propose the (({#+})) and (({#-})) methods on (({Range})). These would be useful for translating ranges - for example, given a range where the endpoints are 1-indexed, the range could be translated by 1 in the negative direction to use in (({Array#[]})). Instead of doing a syntactically-bulky manual translation like so: ary[(range.begin - 1)..(range.end - 1)] (({Range#-})) could be used instead: ary[range - 1] The translation methods would not handle certain endpoint types specially, they would just pass the call on. Here's an example implementation in Ruby: class Range def +(other) Range.new(self.begin + other, self.end + other, exclude_end?) end def -(other) Range.new(self.begin - other, self.end - other, exclude_end?) end end =end -- http://bugs.ruby-lang.org/