Sha256: f2c4304cc770bf5f40da0de14d9b2f598cca6b852cdf037b1f5f355fc06762eb
Contents?: true
Size: 1004 Bytes
Versions: 1
Compression:
Stored size: 1004 Bytes
Contents
require 'ruby_memoized/version' require 'ruby_memoized/memoizer' module RubyMemoized def self.included(klass) klass.extend(ClassMethods) end module ClassMethods def memoized @memoized = true end def unmemoized @memoized = false end def method_added(method_name) if @memoized @memoized = false unmemoized_method_name = :"unmemoized_#{method_name}" memoizer_name = :"memoizer_for_#{method_name}" define_method memoizer_name do memoizer = instance_variable_get "@#{memoizer_name}" if memoizer memoizer else instance_variable_set "@#{memoizer_name}", Memoizer.new(self, unmemoized_method_name) end end alias_method unmemoized_method_name, method_name define_method method_name do |*args, **kwargs, &block| send(memoizer_name).call(*args, **kwargs, &block) end @memoized = true end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ruby_memoized-0.1.3 | lib/ruby_memoized.rb |