Module: Evilution::CLI::Parser::FileArgs

Defined in:
lib/evilution/cli/parser/file_args.rb

Class Method Summary collapse

Class Method Details

.expand_spec_dir(dir) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/evilution/cli/parser/file_args.rb', line 21

def expand_spec_dir(dir)
  unless File.directory?(dir)
    warn("Error: #{dir} is not a directory")
    return []
  end

  Dir.glob(File.join(dir, "**/*_spec.rb"))
end

.parse(raw_args) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/evilution/cli/parser/file_args.rb', line 6

def parse(raw_args)
  files = []
  ranges = {}

  raw_args.each do |arg|
    file, range_str = arg.split(":", 2)
    files << file
    next unless range_str

    ranges[file] = parse_line_range(range_str)
  end

  [files, ranges]
end

.parse_line_range(str) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/evilution/cli/parser/file_args.rb', line 30

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
end