Class: Ame::Method
- Inherits:
-
Object
- Object
- Ame::Method
- Defined in:
- lib/ame/method.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#ruby_name ⇒ Object
readonly
Returns the value of attribute ruby_name.
Class Method Summary collapse
Instance Method Summary collapse
- #argument(name, description, options = {}, &validate) ⇒ Object
- #arguments ⇒ Object
- #arity ⇒ Object
- #call(instance, arguments = nil, options = nil) ⇒ Object
- #define(name) ⇒ Object
- #description(description = nil) ⇒ Object
-
#initialize(klass) ⇒ Method
constructor
A new instance of Method.
- #option(name, description, options = {}, &validate) ⇒ Object
- #options ⇒ Object
- #options_must_precede_arguments ⇒ Object
- #process(instance, arguments) ⇒ Object
- #qualified_name ⇒ Object
- #splat(name, description, options = {}, &validate) ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(klass) ⇒ Method
Returns a new instance of Method.
14 15 16 17 |
# File 'lib/ame/method.rb', line 14 def initialize(klass) @class = klass @description = nil end |
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
74 75 76 |
# File 'lib/ame/method.rb', line 74 def name @name end |
#ruby_name ⇒ Object (readonly)
Returns the value of attribute ruby_name.
74 75 76 |
# File 'lib/ame/method.rb', line 74 def ruby_name @ruby_name end |
Class Method Details
.name(name) ⇒ Object
9 10 11 |
# File 'lib/ame/method.rb', line 9 def name(name) name.to_s.gsub('_', '-').to_sym end |
.ruby_name(name) ⇒ Object
5 6 7 |
# File 'lib/ame/method.rb', line 5 def ruby_name(name) name.to_s.gsub('-', '_').to_sym end |
Instance Method Details
#argument(name, description, options = {}, &validate) ⇒ Object
35 36 37 38 |
# File 'lib/ame/method.rb', line 35 def argument(name, description, = {}, &validate) arguments.argument name, description, , &validate self end |
#arguments ⇒ Object
84 85 86 |
# File 'lib/ame/method.rb', line 84 def arguments @arguments ||= Ame::Arguments.new end |
#arity ⇒ Object
45 46 47 |
# File 'lib/ame/method.rb', line 45 def arity arguments.arity end |
#call(instance, arguments = nil, options = nil) ⇒ Object
67 68 69 70 71 72 |
# File 'lib/ame/method.rb', line 67 def call(instance, arguments = nil, = nil) , _ = self..process([]) unless arguments ||= self.arguments.process(, []) instance.send ruby_name, *(arguments + (.empty? ? [] : [])) self end |
#define(name) ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'lib/ame/method.rb', line 49 def define(name) self.name = name option :help, 'Display help for this method', :ignore => true do @class.help_for_method self throw Ame::AbortAllProcessing end unless .include? :help self end |
#description(description = nil) ⇒ Object
19 20 21 22 23 |
# File 'lib/ame/method.rb', line 19 def description(description = nil) return @description unless description @description = description self end |
#option(name, description, options = {}, &validate) ⇒ Object
30 31 32 33 |
# File 'lib/ame/method.rb', line 30 def option(name, description, = {}, &validate) self..option name, description, , &validate self end |
#options ⇒ Object
80 81 82 |
# File 'lib/ame/method.rb', line 80 def @options ||= Ame::Options.new end |
#options_must_precede_arguments ⇒ Object
25 26 27 28 |
# File 'lib/ame/method.rb', line 25 def self.. self end |
#process(instance, arguments) ⇒ Object
62 63 64 65 |
# File 'lib/ame/method.rb', line 62 def process(instance, arguments) , remainder = self..process(arguments) call(instance, self.arguments.process(, remainder), ) end |
#qualified_name ⇒ Object
76 77 78 |
# File 'lib/ame/method.rb', line 76 def qualified_name [@class.fullname, name.to_s].reject{ |n| n.empty? }.join(' ') end |
#splat(name, description, options = {}, &validate) ⇒ Object
40 41 42 43 |
# File 'lib/ame/method.rb', line 40 def splat(name, description, = {}, &validate) arguments.splat name, description, , &validate self end |
#valid? ⇒ Boolean
58 59 60 |
# File 'lib/ame/method.rb', line 58 def valid? not description.nil? end |