module T::Props::HasLazilySpecializedMethods::DecoratorMethods
def eagerly_define_lazy_methods!
def eagerly_define_lazy_methods! return if lazily_defined_methods.empty? source = lazily_defined_methods.values.map(&:call).map(&:to_s).join("\n\n") cls = decorated_class cls.class_eval(source) lazily_defined_methods.keys.each {|name| cls.send(:private, name)} lazily_defined_methods.clear end
def enqueue_lazy_method_definition!(name, &blk)
def enqueue_lazy_method_definition!(name, &blk) _defined_methods[name] = blk decorated_class nd(:define_method, name) do |*args| .class.decorator.send(:eval_lazily_defined_method!, name) (name, *args) nd(:private, name)
def eval_lazily_defined_method!(name)
def eval_lazily_defined_method!(name) sLazilySpecializedMethods.lazy_evaluation_enabled? e SourceEvaluationDisabled.new = lazily_defined_methods.fetch(name).call decorated_class ass_eval(source.to_s) nd(:private, name)
def lazily_defined_methods
def lazily_defined_methods y_defined_methods ||= {}