Module: Thor::Base

### Home Classes Methods

### In Files

- lib/thor/base.rb
- lib/thor/shell.rb

### Namespace

- MODULE Thor::Base::ClassMethods

### Methods

- ::new
- ::shell
- ::subclass_files
- ::subclasses

### Class/Module Index

Quicksearch

- Thor
- Thor::Actions
- Thor::Actions::ClassMethods
- Thor::AmbiguousCommandError
- Thor::Base
- Thor::Base::ClassMethods
- Thor::Command
- Thor::DynamicCommand
- Thor::Error
- Thor::Group
- Thor::HiddenCommand
- Thor::Invocation
- Thor::Invocation::ClassMethods
- Thor::InvocationError
- Thor::LineEditor
- Thor::LineEditor::Basic
- Thor::LineEditor::Readline
- Thor::LineEditor::Readline::PathCompletion
- Thor::MalformattedArgumentError
- Thor::RakeCompat
- Thor::RequiredArgumentMissingError
- Thor::Shell
- Thor::Shell::Basic
- Thor::Shell::Color
- Thor::Shell::HTML
- Thor::UndefinedCommandError
- Thor::UnknownArgumentError
- Thor::Util
- Object

No matching classes.

# Thor::Base

### Attributes

shell[W]
args[RW]
options[RW]
parent_options[RW]

### Public Class Methods

new(args = [], local_options = {}, config = {}) click to toggle source

It receives arguments in an Array and two hashes, one for options and other for configuration.

Notice that it does not check if all required arguments were supplied. It should be done by the parser.

#### Parameters

args> | An array of objects. The objects are applied to their respective accessors declared with `argument`.
options<Hash> | An options hash that will be available as self.options. The hash given is converted to a hash with indifferent access, magic predicates (options.skip?) and then frozen.
config<Hash> | Configuration for this Thor class.

    # File lib/thor/base.rb, line 44
    def initialize(args = [], local_options = {}, config = {}) # rubocop:disable MethodLength
      parse_options = self.class.class_options

      # The start method splits inbound arguments at the first argument
      # that looks like an option (starts with - or --). It then calls
      # new, passing in the two halves of the arguments Array as the
      # first two parameters.

      command_options = config.delete(:command_options) # hook for start
      parse_options = parse_options.merge(command_options) if command_options
      if local_options.is_a?(Array)
        array_options, hash_options = local_options, {}
      else
        # Handle the case where the class was explicitly instantiated
        # with pre-parsed options.
        array_options, hash_options = [], local_options
      end

      # Let Thor::Options parse the options first, so it can remove
      # declared options from the array. This will leave us with
      # a list of arguments that weren't declared.
      stop_on_unknown = self.class.stop_on_unknown_option? config[:current_command]
      opts = Thor::Options.new(parse_options, hash_options, stop_on_unknown)
      self.options = opts.parse(array_options)
      self.options = config[:class_options].merge(options) if config[:class_options]

      # If unknown options are disallowed, make sure that none of the
      # remaining arguments looks like an option.
      opts.check_unknown! if self.class.check_unknown_options?(config)

      # Add the remaining arguments from the options parser to the
      # arguments passed in to initialize. Then remove any positional
      # arguments declared using #argument (this is primarily used
      # by Thor::Group). Tis will leave us with the remaining
      # positional arguments.
      to_parse  = args
      to_parse += opts.remaining unless self.class.strict_args_position?(config)

      thor_args = Thor::Arguments.new(self.class.arguments)
      thor_args.parse(to_parse).each { |k, v| __send__("#{k}=", v) }
      @args = thor_args.remaining
    end

shell() click to toggle source

Returns the shell used in all Thor classes. If you are in a Unix platform it will use a colored log, otherwise it will use a basic one without color.

    # File lib/thor/shell.rb, line 11
    def shell
      @shell ||= if ENV["THOR_SHELL"] && ENV["THOR_SHELL"].size > 0
        Thor::Shell.const_get(ENV["THOR_SHELL"])
      elsif RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ && !ENV["ANSICON"]
        Thor::Shell::Basic
      else
        Thor::Shell::Color
      end
    end

subclass_files() click to toggle source

Returns the files where the subclasses are kept.

#### Returns

Hash[path<String> => Class]

    # File lib/thor/base.rb, line 108
    def subclass_files
      @subclass_files ||= Hash.new { |h, k| h[k] = [] }
    end

subclasses() click to toggle source

Returns the classes that inherits from Thor or Thor::Group.

#### Returns

Array

    # File lib/thor/base.rb, line 99
    def subclasses
      @subclasses ||= []
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.