Class: Epi::Slop::Commands
- Includes:
- Enumerable
- Defined in:
- lib/epitools/slop/commands.rb
Instance Attribute Summary collapse
-
#arguments ⇒ Object
readonly
Returns the value of attribute arguments.
-
#banner(banner = nil) ⇒ Object
Optionally set the banner for this command help output.
-
#commands ⇒ Object
readonly
Returns the value of attribute commands.
-
#config ⇒ Object
readonly
Returns the value of attribute config.
Instance Method Summary collapse
-
#[](key) ⇒ Object
(also: #get)
Fetch the instance of Slop tied to a command.
-
#default(config = {}, &block) ⇒ Object
Add a Slop instance used when no other commands exist.
-
#each(&block) ⇒ Object
Enumerable interface.
-
#global(config = {}, &block) ⇒ Object
Add a global Slop instance.
-
#initialize(config = {}, &block) ⇒ Commands
constructor
Create a new instance of Slop::Commands and optionally build Slop instances via a block.
-
#inspect ⇒ Object
Returns the inspection String.
-
#on(command, config = {}, &block) ⇒ Object
Add a Slop instance for a specific command.
-
#parse(items = ARGV) ⇒ Object
Parse a list of items.
-
#parse!(items = ARGV) ⇒ Object
Parse a list of items, removing any options or option arguments found.
-
#present?(key) ⇒ Boolean
Check for a command presence.
-
#to_hash ⇒ Object
Returns a nested Hash with Slop options and values.
-
#to_s ⇒ Object
(also: #help)
Returns the help String.
Methods included from Enumerable
#*, #**, #average, #blank?, #combination, #counts, #cross_product, #foldl, #group_neighbours_by, #grouped_to_h, #groups, #map_recursively, #parallel_map, #permutation, #powerset, #reverse, #reverse_each, #rle, #rzip, #select_recursively, #skip, #sort_numerically, #split_after, #split_at, #split_before, #split_between, #sum, #to_iter, #uniq, #unzip
Methods included from Array::ToCSV
Constructor Details
#initialize(config = {}, &block) ⇒ Commands
Create a new instance of Slop::Commands and optionally build Slop instances via a block. Any configuration options used in this method will be the default configuration options sent to each Slop object created.
config - An optional configuration Hash. block - Optional block used to define commands.
Examples:
commands = Slop::Commands.new do
on :new do
on '-o', '--outdir=', 'The output directory'
on '-v', '--verbose', 'Enable verbose mode'
end
on :generate do
on '--assets', 'Generate assets', :default => true
end
global do
on '-D', '--debug', 'Enable debug mode', :default => false
end
end
commands[:new].class #=> Slop
commands.parse
39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/epitools/slop/commands.rb', line 39 def initialize(config = {}, &block) @config = config @commands = {} @banner = nil @triggered_command = nil warn "[DEPRECATED] Slop::Commands is deprecated and will be removed in "\ "Slop version 4. Check out http://injekt.github.com/slop/#commands for "\ "a new implementation of commands." return unless block_given? block.arity == 1 ? yield(self) : instance_eval(&block) end |
Instance Attribute Details
#arguments ⇒ Object (readonly)
Returns the value of attribute arguments.
8 9 10 |
# File 'lib/epitools/slop/commands.rb', line 8 def arguments @arguments end |
#banner(banner = nil) ⇒ Object
Optionally set the banner for this command help output.
banner - The String text to set the banner.
Returns the String banner if one is set.
59 60 61 62 |
# File 'lib/epitools/slop/commands.rb', line 59 def ( = nil) @banner = if @banner end |
#commands ⇒ Object (readonly)
Returns the value of attribute commands.
8 9 10 |
# File 'lib/epitools/slop/commands.rb', line 8 def commands @commands end |
#config ⇒ Object (readonly)
Returns the value of attribute config.
8 9 10 |
# File 'lib/epitools/slop/commands.rb', line 8 def config @config end |
Instance Method Details
#[](key) ⇒ Object Also known as: get
Fetch the instance of Slop tied to a command.
key - The String or Symbol key used to locate this command.
Returns the Slop instance if this key is found, nil otherwise.
100 101 102 |
# File 'lib/epitools/slop/commands.rb', line 100 def [](key) commands[key.to_s] end |
#default(config = {}, &block) ⇒ Object
Add a Slop instance used when no other commands exist.
config - A Hash of configuration options to pass to Slop. block - An optional block used to pass options to Slop.
Returns the newly created Slop instance mapped to default.
81 82 83 |
# File 'lib/epitools/slop/commands.rb', line 81 def default(config = {}, &block) on('default', config, &block) end |
#each(&block) ⇒ Object
Enumerable interface.
119 120 121 |
# File 'lib/epitools/slop/commands.rb', line 119 def each(&block) @commands.each(&block) end |
#global(config = {}, &block) ⇒ Object
Add a global Slop instance.
config - A Hash of configuration options to pass to Slop. block - An optional block used to pass options to Slop.
Returns the newly created Slop instance mapped to global.
91 92 93 |
# File 'lib/epitools/slop/commands.rb', line 91 def global(config = {}, &block) on('global', config, &block) end |
#inspect ⇒ Object
Returns the inspection String.
170 171 172 |
# File 'lib/epitools/slop/commands.rb', line 170 def inspect "#<Slop::Commands #{config.inspect} #{commands.values.map(&:inspect)}>" end |
#on(command, config = {}, &block) ⇒ Object
Add a Slop instance for a specific command.
command - A String or Symbol key used to identify this command. config - A Hash of configuration options to pass to Slop. block - An optional block used to pass options to Slop.
Returns the newly created Slop instance mapped to command.
71 72 73 |
# File 'lib/epitools/slop/commands.rb', line 71 def on(command, config = {}, &block) commands[command.to_s] = Slop.new(@config.merge(config), &block) end |
#parse(items = ARGV) ⇒ Object
Parse a list of items.
items - The Array of items to parse.
Returns the original Array of items.
128 129 130 131 |
# File 'lib/epitools/slop/commands.rb', line 128 def parse(items = ARGV) parse! items.dup items end |
#parse!(items = ARGV) ⇒ Object
Parse a list of items, removing any options or option arguments found.
items - The Array of items to parse.
Returns the original Array of items with options removed.
138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/epitools/slop/commands.rb', line 138 def parse!(items = ARGV) if (opts = commands[items[0].to_s]) @triggered_command = items.shift execute_arguments! items opts.parse! items elsif (opts = commands['default']) opts.parse! items elsif config[:strict] && items[0] raise InvalidCommandError, "Unknown command `#{items[0]}`" end execute_global_opts! items items end |
#present?(key) ⇒ Boolean
Check for a command presence.
Examples:
cmds.parse %w( foo )
cmds.present?(:foo) #=> true
cmds.present?(:bar) #=> false
Returns true if the given key is present in the parsed arguments.
114 115 116 |
# File 'lib/epitools/slop/commands.rb', line 114 def present?(key) key.to_s == @triggered_command end |
#to_hash ⇒ Object
Returns a nested Hash with Slop options and values. See Slop#to_hash.
153 154 155 |
# File 'lib/epitools/slop/commands.rb', line 153 def to_hash Hash[commands.map { |k, v| [k.to_sym, v.to_hash] }] end |
#to_s ⇒ Object Also known as: help
Returns the help String.
158 159 160 161 162 163 164 165 166 |
# File 'lib/epitools/slop/commands.rb', line 158 def to_s defaults = commands.delete('default') globals = commands.delete('global') helps = commands.reject { |_, v| v..none? } helps['Global options'] = globals.to_s if globals && globals..any? helps['Other options'] = defaults.to_s if defaults && defaults..any? = @banner ? "#{@banner}\n" : "" + helps.map { |key, opts| " #{key}\n#{opts}" }.join("\n\n") end |