Module: Nake::ArgvParser
- Defined in:
- lib/nake/argv.rb
Class Method Summary collapse
- .extract(args) ⇒ Object
- .extract!(args) ⇒ Object
- .parse(argument) ⇒ Object
- .parse!(argument) ⇒ Object
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 |, argument| key, value = self.parse(argument) if key [key] = value end 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 |, argument| key, value = self.parse(argument) if key [key] = value args.delete(argument) end 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 |