Module: Nake::ArgvParser

Defined in:
lib/nake/argv.rb

Class Method Summary collapse

Class Method Details

.extract(args) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/nake/argv.rb', line 16

def self.extract(args)
  args.inject(Hash.new) do |options, argument|
    key, value = self.parse(argument)
    if key
      options[key] = value
    end
    options
  end
end

.extract!(args) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/nake/argv.rb', line 5

def self.extract!(args)
  args.dup.inject(Hash.new) do |options, argument|
    key, value = self.parse(argument)
    if key
      options[key] = value
      args.delete(argument)
    end
    options
  end
end

.parse(argument) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/nake/argv.rb', line 30

def self.parse(argument)
  case argument
  when /^--no-([^=]+)$/ # --no-git-repository
    return [$1.gsub("-", "_").to_sym, false]
  when /^--([^=]+)$/    # --git-repository
    return [$1.gsub("-", "_").to_sym, true]
  when /^--([^=]+)=([^,]+)$/ # --controller=post
    key, value = $1, $2
    return [key.gsub("-", "_").to_sym, value.dup]
  when /^--([^=]+)=(.+)$/    # --controllers=posts,comments
    key, value = $1, $2
    return [key.gsub("-", "_").to_sym, value.split(",")]
  else
    return false
  end
end

.parse!(argument) ⇒ Object



26
27
28
# File 'lib/nake/argv.rb', line 26

def self.parse!(argument)
  self.parse(argument) || raise("Argument #{argument} can't be parsed!")
end