12 lines
326 B
Text
12 lines
326 B
Text
func rangex(str) {
|
|
str.split(',').map { |r|
|
|
var m = r.match(/^
|
|
(?(DEFINE) (?<int>[+-]?[0-9]+) )
|
|
(?<from>(?&int))-(?<to>(?&int))
|
|
$/x)
|
|
m ? do {var c = m.ncap; (Num(c{:from}) .. Num(c{:to}))...}
|
|
: Num(r)
|
|
}
|
|
}
|
|
|
|
say rangex('-6,-3--1,3-5,7-11,14,15,17-20').join(',')
|