module RegexForRange

Constants

VERSION

Public Class Methods

get_regex_for_range(first, last) click to toggle source
# File lib/regex_for_range.rb, line 8
def get_regex_for_range(first, last)
  left = left_bounds(first, last)
  last_left = left.delete_at(left.length - 1)

  right = right_bounds(last_left.first, last)
  first_right = right.delete_at(0)

  merged = []
  merged += left

  if !last_left.overlaps(first_right)
    merged.push(last_left)
    merged.push(first_right)
  else
    merged.push(RegexForRange::Util.join(last_left, first_right))
  end

  merged += right

  return RegexForRange::Util.join_regex_by_or(merged)
end
left_bounds(first, last) click to toggle source
# File lib/regex_for_range.rb, line 31
def left_bounds(first, last)

  results = []

  while last > first
    range = RegexForRange::Util.from_start(first)
    results.push(range)
    first = range.last + 1
  end

  return results
end
right_bounds(first, last) click to toggle source
# File lib/regex_for_range.rb, line 44
def right_bounds(first, last)
  results = []

  while last > first
    range = RegexForRange::Util.from_end(last)
    results.push(range)
    last = range.first - 1
  end

  return results.reverse
end