Class: Slop::Commands

### Home Classes Methods

### In Files

- lib/slop/commands.rb

### Parent

Object

### Methods

- ::new
- #[]
- #banner
- #default
- #each
- #get
- #global
- #help
- #inspect
- #on
- #parse
- #parse!
- #present?
- #to_hash
- #to_s

### Included Modules

- Enumerable

### Class/Module Index

Quicksearch

- Slop
- Slop::Commands
- Slop::Error
- Slop::InvalidArgumentError
- Slop::InvalidCommandError
- Slop::InvalidOptionError
- Slop::MissingArgumentError
- Slop::MissingOptionError
- Slop::Option

No matching classes.

# Slop::Commands

### Attributes

arguments[R]
banner[W]
commands[R]
config[R]

### Public Class Methods

new(config = {}, &block) click to toggle source

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

    # File lib/slop/commands.rb, line 36
    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://leejarvis.github.io/slop/#commands for "         "a new implementation of commands."

      if block_given?
        block.arity == 1 ? yield(self) : instance_eval(&block)
      end
    end

### Public Instance Methods

[](key) click to toggle source

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.

    # File lib/slop/commands.rb, line 97
    def [](key)
      commands[key.to_s]
    end

Also aliased as: get
banner(banner = nil) click to toggle source

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.

    # File lib/slop/commands.rb, line 56
    def banner(banner = nil)
      @banner = banner if banner
      @banner
    end

default(config = {}, &block) click to toggle source

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.

    # File lib/slop/commands.rb, line 78
    def default(config = {}, &block)
      on('default', config, &block)
    end

each(&block) click to toggle source

Enumerable interface.

    # File lib/slop/commands.rb, line 116
    def each(&block)
      @commands.each(&block)
    end

get(key) click to toggle source
Alias for: []
global(config = {}, &block) click to toggle source

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.

    # File lib/slop/commands.rb, line 88
    def global(config = {}, &block)
      on('global', config, &block)
    end

help() click to toggle source
Alias for: to_s
inspect() click to toggle source

Returns the inspection String.

    # File lib/slop/commands.rb, line 176
    def inspect
      "#<Slop::Commands #{config.inspect} #{commands.values.map(&:inspect)}>"
    end

on(command, config = {}, &block) click to toggle source

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.

    # File lib/slop/commands.rb, line 68
    def on(command, config = {}, &block)
      commands[command.to_s] = Slop.new(@config.merge(config), &block)
    end

parse(items = ARGV) click to toggle source

Parse a list of items.

items - The Array of items to parse.

Returns the original Array of items.

    # File lib/slop/commands.rb, line 125
    def parse(items = ARGV)
      parse! items.dup
      items
    end

parse!(items = ARGV) click to toggle source

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.

    # File lib/slop/commands.rb, line 135
    def parse!(items = ARGV)
      if opts = commands[items[0].to_s]
        @triggered_command = items.shift
        execute_arguments! items
        opts.parse! items
        execute_global_opts! items
      else
        if opts = commands['default']
          opts.parse! items
        else
          if config[:strict] && items[0]
            raise InvalidCommandError, "Unknown command `#{items[0]}`"
          end
        end
        execute_global_opts! items
      end
      items
    end

present?(key) click to toggle source

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.

    # File lib/slop/commands.rb, line 111
    def present?(key)
      key.to_s == @triggered_command
    end

to_hash() click to toggle source

Returns a nested Hash with Slop options and values. See Slop#to_hash.

    # File lib/slop/commands.rb, line 155
    def to_hash
      Hash[commands.map { |k, v| [k.to_sym, v.to_hash] }]
    end

to_s() click to toggle source

Returns the help String.

    # File lib/slop/commands.rb, line 160
    def to_s
      defaults = commands.delete('default')
      globals = commands.delete('global')
      helps = commands.reject { |_, v| v.options.none? }
      if globals && globals.options.any?
        helps.merge!('Global options' => globals.to_s)
      end
      if defaults && defaults.options.any?
        helps.merge!('Other options' => defaults.to_s)
      end
      banner = @banner ? "#{@banner}\n" : ""
      banner + helps.map { |key, opts| "  #{key}\n#{opts}" }.join("\n\n")
    end

Also aliased as: help

[Validate]

Generated with the Darkfish Rdoc Generator 2.