Module: Evilution::MCP::InfoTool::RequestParser

Defined in:
lib/evilution/mcp/info_tool/request_parser.rb

Class Method Summary collapse

Class Method Details

.parse_files(raw_files) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/evilution/mcp/info_tool/request_parser.rb', line 8

def parse_files(raw_files)
  files = []
  ranges = {}

  raw_files.each do |arg|
    file, range_str = arg.split(":", 2)
    files << file
    ranges[file] = parse_line_range(range_str) if range_str
  end

  [files, ranges]
end

.parse_line_range(str) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/evilution/mcp/info_tool/request_parser.rb', line 21

def parse_line_range(str)
  if str.include?("-")
    start_str, end_str = str.split("-", 2)
    start_line = Integer(start_str)
    end_line = end_str.empty? ? Float::INFINITY : Integer(end_str)
    start_line..end_line
  else
    line = Integer(str)
    line..line
  end
rescue ArgumentError, TypeError
  raise Evilution::ParseError, "invalid line range: #{str.inspect}"
end