module Memoize

Module Memoize

Public Instance Methods

[](property) click to toggle source
# File lib/memoize.rb, line 22
def [](property)
    @memoize = {} unless defined?(@memoize)

    if (value = @memoize[property])
        return value
    end

    current_item = @item

    property_path = ''

    property.split('.').each do |elem|
        if property_path.empty?
            property_path << elem
        else
            property_path << '.' << elem
        end

        if (val = @memoize[property_path])
            current_item = val
        else
            begin
                current_item = current_item.send(elem)
            rescue StandardError
                current_item = nil
            end
        end

        break if current_item.nil?

        @memoize[property_path] = current_item
    end

    @memoize[property] = current_item
end
[]=(property, value) click to toggle source
# File lib/memoize.rb, line 67
def []=(property, value)
    @memoize = {} unless defined?(@memoize)

    @memoize[property] = value
end
clear(property) click to toggle source
# File lib/memoize.rb, line 58
def clear(property)
    @memoize = {} unless defined?(@memoize)
    @memoize.clear[property] if @memoize[property]
end
clear_all() click to toggle source
# File lib/memoize.rb, line 63
def clear_all
    @memoize = {}
end