Range modifications: Difference between revisions

Content added Content deleted
m (remove redundant parsing)
Line 247: Line 247:


function removeinteger!(seq, n::Integer)
function removeinteger!(seq, n::Integer)
pos = findlast(x -> x.start <= n, seq)
for (pos, r) in enumerate(seq)
if pos != nothing
if n in r
r1, r2 = seq[pos].start, seq[pos].stop
start, stop = r.start, r.stop
if r1 == r2 == n
if start == stop == n
deleteat!(seq, pos:pos)
deleteat!(seq, pos:pos)
elseif r2 == n
elseif stop == n
seq[pos] = r1:r2-1
seq[pos] = start:stop-1
elseif r1 == n
elseif r1 == n
seq[pos] = r1+1:r2
seq[pos] = start+1:stop
elseif r1 < n < r2
elseif start < n < stop
seq[pos] = n+1:r2
seq[pos] = start+1:stop
insert!(seq, pos, r1:n-1)
insert!(seq, pos, stop:n-1)
end
break
end
end
end
end