Module: HangingMethods::ClassMethods

Defined in:
lib/hanging_methods.rb

Instance Method Summary collapse

Instance Method Details

#add_hanging_method(hanging_method_name, options = {}) ⇒ Object

Raises:

  • (ArgumentError)


6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/hanging_methods.rb', line 6

def add_hanging_method(hanging_method_name, options = {})
  unknown_keys = options.keys - [:after_invocation]
  raise ArgumentError, "Unknown keys: #{unknown_keys.join(',')}" unless unknown_keys.empty?

  add_hanging_method_options(hanging_method_name, options)

  define_method(hanging_method_name) do
    ::HangingMethods::MethodCallNotifier.new do |*method_name_and_args, &block|
      add_hanging_method_invocation(hanging_method_name, method_name_and_args, block)
    end
  end
end

#add_hanging_method_options(hanging_method_name, options) ⇒ Object



19
20
21
# File 'lib/hanging_methods.rb', line 19

def add_hanging_method_options(hanging_method_name, options)
  hanging_method_options(hanging_method_name).merge!(options)
end

#hanging_method_options(hanging_method_name) ⇒ Object



23
24
25
26
# File 'lib/hanging_methods.rb', line 23

def hanging_method_options(hanging_method_name)
  @hanging_method_options ||= {}
  @hanging_method_options[hanging_method_name] ||= {}
end