This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
commit 25c9127b7d68f29f8a01b64ee730ef349278a767
tree 8919274f3257dd9bfcddf0655c40d5dba85ec07b
parent 7826d0ba5a932e59df2845692ccf56a736fcd023
tree 8919274f3257dd9bfcddf0655c40d5dba85ec07b
parent 7826d0ba5a932e59df2845692ccf56a736fcd023
thor / README.markdown
thor
Map options to a class. Simply create a class with the appropriate annotations, and have options automatically map to functions and parameters.
Examples:
class MyApp
extend Thor # [1]
map "-L" => :list # [2]
desc "install APP_NAME", "install one of the available apps" # [3]
method_options :force => :boolean # [4]
def install(name, opts)
... code ...
if opts[:force]
# do something
end
end
desc "list [SEARCH]", "list all of the available apps, limited by SEARCH"
def list(search = "")
# list everything
end
end
MyApp.start
Thor automatically maps commands as follows:
app install name --force
That gets converted to:
MyApp.new.install("name", :force => true)
[1] Use extend 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.




