File: method_definer.rb

package info (click to toggle)
ruby-mocha 3.0.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,652 kB
  • sloc: ruby: 12,324; javascript: 499; makefile: 14
file content (17 lines) | stat: -rw-r--r-- 577 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# frozen_string_literal: true

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