module Mutant::Repository::Diff::Ranges

def self.mk_range(start, offset)

def self.mk_range(start, offset)
  start = Integer(start)
  ::Range.new(start, start + (offset ? Integer(offset).pred : 0))
end

def self.parse(diff)

Returns:
  • (Set>) -

Parameters:
  • (String) --
def self.parse(diff)
  diff.lines.flat_map(&method(:parse_ranges)).to_set
end

def self.parse_ranges(line)

def self.parse_ranges(line)
  match = REGEXP.match(line) or return EMPTY_ARRAY
  match
    .captures
    .each_slice(2)
    .map { |start, offset| mk_range(start, offset) }
    .reject { |range| range.end < range.begin }
end