Range modifications: Difference between revisions
Content added Content deleted
m (sort input) |
|||
Line 234: | Line 234: | ||
function parse(::Type{RangeSequence}, s) |
function parse(::Type{RangeSequence}, s) |
||
seq = UnitRange[] |
seq = UnitRange[] |
||
entries = split(s, r"\s*,\s*") |
entries = sort!(split(s, r"\s*,\s*")) |
||
for e in entries |
for e in entries |
||
startstop = split(e, r"\:|\-") |
startstop = split(e, r"\:|\-") |
||
Line 288: | Line 288: | ||
end |
end |
||
function |
function print(io::IO, seq::RangeSequence) |
||
return print(io, join(map(r -> "$(r.start)-$(r.stop)", reduce(seq)), ",")) |
|||
weird && return "$r1-$r2" |
|||
return r1 == r2 ? "$r1" : abs(r1 - r2) > 1 ? "$r1-$r2" : "$r1, $r2" |
|||
end |
end |
||
print(io::IO, seq::RangeSequence) = print(io, join(map(string, reduce(seq)), ",")) |
|||
const seq = parse(RangeSequence, "") |
const seq = parse(RangeSequence, "") |
||
Line 340: | Line 335: | ||
println(" removed 9 => ", seq3) |
println(" removed 9 => ", seq3) |
||
removeinteger!(seq3, 7) |
removeinteger!(seq3, 7) |
||
println(" removed 7 => ", seq3) |
println(" removed 7 => ", seq3, "\n") |
||
println("Parse \"10-25, 1-5, 27-30\" => ", parse(RangeSequence, "10-25, 1-5, 27-30")) |
|||
</lang>{{out}} |
</lang>{{out}} |
||
<pre> |
<pre> |
||
Line 366: | Line 363: | ||
removed 9 => 1-5,7-7,10-25,27-30 |
removed 9 => 1-5,7-7,10-25,27-30 |
||
removed 7 => 1-5,10-25,27-30 |
removed 7 => 1-5,10-25,27-30 |
||
Parse "10-25, 1-5, 27-30" => 1-5,10-25,27-30 |
|||
</pre> |
</pre> |
||