class FedoraLens::AttributeMethods::AttributeMethodCache

Public Class Methods

new() click to toggle source
# File lib/fedora_lens/attribute_methods.rb, line 19
def initialize
  @module = Module.new
  @method_cache = ThreadSafe::Cache.new
end

Public Instance Methods

[](name) click to toggle source
# File lib/fedora_lens/attribute_methods.rb, line 24
def [](name)
  @method_cache.compute_if_absent(name) do
    safe_name = name.unpack('h*').first
    temp_method = "__temp__#{safe_name}"
    FedoraLens::AttributeMethods::AttrNames.set_name_cache safe_name, name
    @module.module_eval method_body(temp_method, safe_name), __FILE__, __LINE__
    @module.instance_method temp_method
  end
end

Private Instance Methods

method_body() click to toggle source
# File lib/fedora_lens/attribute_methods.rb, line 35
def method_body; raise NotImplementedError; end