File: method_definer.rb

package info (click to toggle)
ruby-mocha 2.4.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,540 kB
  • sloc: ruby: 11,899; javascript: 477; makefile: 14
file content (14 lines) | stat: -rw-r--r-- 545 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
module MethodDefiner
  def define_instance_method(object, method_symbol, &block)
    object.singleton_class.send(:define_method, method_symbol, block)
  end

  def replace_instance_method(object, method_symbol, &block)
    raise "Cannot replace #{method_symbol} as #{self} does not respond to it." unless object.respond_to?(method_symbol)
    define_instance_method(object, method_symbol, &block)
  end

  def define_instance_accessor(object, *symbols)
    symbols.each { |symbol| object.singleton_class.send(:attr_accessor, symbol) }
  end
end