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|
      add_hanging_method_name_and_args_invocation(hanging_method_name, method_name_and_args)
    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