Class: Ame::Method

Inherits:
Object
  • Object
show all
Defined in:
lib/ame/method.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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

#nameObject

Returns the value of attribute name.



74
75
76
# File 'lib/ame/method.rb', line 74

def name
  @name
end

#ruby_nameObject (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, options = {}, &validate)
  arguments.argument name, description, options, &validate
  self
end

#argumentsObject



84
85
86
# File 'lib/ame/method.rb', line 84

def arguments
  @arguments ||= Ame::Arguments.new
end

#arityObject



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, options = nil)
  options, _ = self.options.process([]) unless options
  arguments ||= self.arguments.process(options, [])
  instance.send ruby_name, *(arguments + (options.empty? ? [] : [options]))
  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 options.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, options = {}, &validate)
  self.options.option name, description, options, &validate
  self
end

#optionsObject



80
81
82
# File 'lib/ame/method.rb', line 80

def options
  @options ||= Ame::Options.new
end

#options_must_precede_argumentsObject



25
26
27
28
# File 'lib/ame/method.rb', line 25

def options_must_precede_arguments
  self.options.options_must_precede_arguments
  self
end

#process(instance, arguments) ⇒ Object



62
63
64
65
# File 'lib/ame/method.rb', line 62

def process(instance, arguments)
  options, remainder = self.options.process(arguments)
  call(instance, self.arguments.process(options, remainder), options)
end

#qualified_nameObject



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, options = {}, &validate)
  arguments.splat name, description, options, &validate
  self
end

#valid?Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/ame/method.rb', line 58

def valid?
  not description.nil?
end