module Mimic::DefineMethods
Constants
- Error
Public Class Methods
body(record)
click to toggle source
# File lib/mimic/define_methods.rb, line 68 def self.body(record) body = '' if record body << <<~RECORD invocation = Invocation.build(binding) __record(invocation) RECORD end body << "Void.new" body end
call(cls, subject_methods=nil, record: nil)
click to toggle source
# File lib/mimic/define_methods.rb, line 5 def self.call(cls, subject_methods=nil, record: nil) subject_methods ||= Mimic.subject_methods(cls) subject_methods.each do |mthd| define_method(cls, mthd, record) end nil end
define_method(cls, mthd, record)
click to toggle source
# File lib/mimic/define_methods.rb, line 15 def self.define_method(cls, mthd, record) method_definition = method_definition(mthd, record) cls.class_eval(method_definition) end
method_definition(mthd, record)
click to toggle source
# File lib/mimic/define_methods.rb, line 20 def self.method_definition(mthd, record) " #{signature(mthd)} #{body(record)} end " end
parameter_list(parameters)
click to toggle source
# File lib/mimic/define_methods.rb, line 34 def self.parameter_list(parameters) parameter_list = '' parameters.each do |parameter| parameter_signature = parameter_signature(parameter) parameter_list << "#{parameter_signature}, " end parameter_list[0...-2] end
parameter_signature(parameter)
click to toggle source
# File lib/mimic/define_methods.rb, line 44 def self.parameter_signature(parameter) type = parameter[0] name = parameter.fetch(1) { :args } case type when :opt return "#{name}=nil" when :req return "#{name}" when :key return "#{name}: nil" when :keyreq return "#{name}:" when :rest return "*#{name}" when :keyrest return "**#{name}" when :block return "&#{name}" else raise Error, "Unknown parameter type (Name: #{name.inspect}, Type: #{type.inspect})" end end
signature(mthd)
click to toggle source
# File lib/mimic/define_methods.rb, line 28 def self.signature(mthd) parameter_list = parameter_list(mthd.parameters) "def #{mthd.name}(#{parameter_list})" end