File: README.markdown

# README.markdown

Path: | README.markdown
Last Update: | Thu Aug 26 07:42:34 -0600 2010

thor

####

Map options to a class. Simply create a class with the appropriate annotations, and have options automatically map to functions and parameters.

Example:

        class MyApp < Thor                                                # [1]
          map "-L" => :list                                               # [2]

          desc "install APP_NAME", "install one of the available apps"    # [3]
          method_options :force => :boolean, :alias => :optional          # [4]
          def install(name)
            user_alias = options[:alias]
            if options.force?
              # do something
            end
            # ... other code ...
          end

          desc "list [SEARCH]", "list all of the available apps, limited by SEARCH"
          def list(search = "")
            # list everything
          end
        end

Thor automatically maps commands as such:

        app install myname --force

That gets converted to:

        MyApp.new.install("myname")
        # with {'force' => true} as options hash

1. Inherit from Thor to turn a class into an option mapper
2. Map additional non-valid identifiers to specific methods. In this case, convert -L to :list
3. Describe the method immediately below. The first parameter is the usage information, and the second parameter is the description.
4. Provide any additional options. These will be marshaled from `—` and `-` params. In this case, a `—force` and a `-f` option is added.

Types for `method_options`

[Validate]