Sha256: a2b0287d189c143f5dcd2f434b83a2d096185d53dbf13950b7a98c5d84de57df
Contents?: true
Size: 1.29 KB
Versions: 2
Compression:
Stored size: 1.29 KB
Contents
class RecordingParent < BasicObject class << self def method_missing(m, *args, &block) __missing_class_macros__.push({m => [args, block].compact}) end def __missing_class_macros__ @__missing_class_macros__ ||= [] end module ConstMissing def const_missing(const_sym) const = self.const_set(const_sym, Module.new) const.extend ConstMissing const.module_eval(<<-RUBY, __FILE__, __LINE__+1) def self.name "#{name.gsub(/#<Module:.*>::/, '')}::#{const_sym}" end def self.inspect name end RUBY RecordingParent.__missing_constants__[const_sym] = const const end end include ConstMissing def __missing_constants__ # This file and it's class variables are reinitialized within a new module namespace on every run. @@__missing_constants__ ||= {} end def listen_to_defined_macros(*methods) methods.each do |m| module_eval(<<-RUBY, __FILE__) def self.#{m}(*args, &block) __missing_class_macros__.push({ __method__ => [args, block].compact }) end RUBY end end end listen_to_defined_macros :attr_reader, :attr_writer, :attr_accessor, :prepend, :include, :extend end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dissociated_introspection-0.1.1 | lib/dissociated_introspection/recording_parent.rb |
dissociated_introspection-0.1.0 | lib/dissociated_introspection/recording_parent.rb |