Module: Mimic

Defined in:
lib/mimic/void.rb,
lib/mimic/build.rb,
lib/mimic/class.rb,
lib/mimic/mimic.rb,
lib/mimic/recorder.rb,
lib/mimic/controls/mimic.rb,
lib/mimic/define_methods.rb,
lib/mimic/remove_methods.rb,
lib/mimic/subject_methods.rb,
lib/mimic/controls/subject.rb,
lib/mimic/controls/recorder.rb,
lib/mimic/preserved_methods.rb,
lib/mimic/controls/invocation.rb,
lib/mimic/predicates/method/parameters.rb,
lib/mimic/controls/subject/no_parameters.rb,
lib/mimic/controls/subject/block_parameter.rb,
lib/mimic/controls/subject/mixed_parameters.rb,
lib/mimic/controls/subject/keyword_parameters.rb,
lib/mimic/controls/subject/delegated_parameters.rb,
lib/mimic/controls/subject/positional_parameters.rb,
lib/mimic/controls/subject/optional_keyword_parameters.rb,
lib/mimic/controls/subject/multiple_assignment_parameter.rb,
lib/mimic/controls/subject/optional_positional_parameters.rb,
lib/mimic/controls/subject/multiple_assignment_named_parameter.rb

Defined Under Namespace

Modules: Build, Class, Controls, DefineMethods, Predicates, Recorder, RemoveMethods Classes: Void

Class Method Summary collapse

Class Method Details

.call(subject_class, record: nil, &blk) ⇒ Object



2
3
4
5
# File 'lib/mimic/mimic.rb', line 2

def self.call(subject_class, record: nil, &blk)
  cls = Build.(subject_class, record: record, &blk)
  cls.allocate
end

.preserved_methodsObject



2
3
4
# File 'lib/mimic/preserved_methods.rb', line 2

def self.preserved_methods
  @preserved ||= (Object.instance_methods << :method_missing).sort
end

.subject_methods(cls) ⇒ Object



2
3
4
5
6
7
8
9
10
11
# File 'lib/mimic/subject_methods.rb', line 2

def self.subject_methods(cls)
  instance_method_names = cls.instance_methods.sort
  instance_method_names -= Mimic.preserved_methods

  instance_methods = instance_method_names.map do |method_name|
    cls.instance_method(method_name)
  end

  instance_methods
end