Method: Utils::Grepper#initialize

Defined in:
lib/utils/grepper.rb

#initialize(opts = {}) ⇒ Grepper

Returns a new instance of Grepper.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/utils/grepper.rb', line 32

def initialize(opts = {})
  @args  = opts[:args] || {}
  @roots = opts[:roots] || []
  @config = opts[:config] || Utils::Config::ConfigFile.new
  if n = @args.values_at(*%w[A B C]).compact.first
    if n.to_s =~ /\A\d+\Z/ and (n = n.to_i) >= 1
      @queue = Queue.new n
    else
      raise ArgumentError, "needs to be an integer number >= 1"
    end
  end
  @paths  = []
  pattern_opts = opts.subhash(:pattern) | {
    :cset  => @args['a'],
    :icase => @args['i'],
  }
  @pattern = @args['R'] ?
    FuzzyPattern.new(pattern_opts) :
    RegexpPattern.new(pattern_opts)
  @name_pattern =
    if name_pattern = @args['N']
      RegexpPattern.new(:pattern => name_pattern)
    elsif name_pattern = @args['n']
      FuzzyPattern.new(:pattern => name_pattern)
    end
  @skip_pattern =
    if skip_pattern = @args['S']
      RegexpPattern.new(:pattern => skip_pattern)
    elsif skip_pattern = @args['s']
      FuzzyPattern.new(:pattern => skip_pattern)
    end
end