Method: Antlr4ruby::RangeSet#delete

Defined in:
lib/antlr4ruby/misc/range_set.rb

#delete(range) ⇒ Object



135
136
137
138
139
140
141
142
143
144
145
# File 'lib/antlr4ruby/misc/range_set.rb', line 135

def delete(range)
  result = []
  data.each do |item|
    next if range.cover?(item)
    result.push(item.min...range.min) if item.include?(range.min) && range.min > item.min
    result.push(range.max + 1..item.max) if item.include?(range.max) && range.max < item.max
    result.push(item) if item.max < range.min || item.min > range.max
  end

  @data = result
end