Sha256: cf3eb012dff96dcb00104ca95b9f05f6351c2890156f40d4953498ac3e9eae2a
Contents?: true
Size: 893 Bytes
Versions: 8
Compression:
Stored size: 893 Bytes
Contents
# class to handle/manage and keep track of list of links in this doc module PMP class Links < HashWithIndifferentAccess include Utils attr_accessor :parent def initialize(parent) super() self.parent = parent end def []=(k, link) super set_parent(link) add_link_name(k) end def add_link_name(name) name = name.to_sym unless parent.respond_to?(name) parent.define_singleton_method(name) { self.links[name] } parent.define_singleton_method("#{name}=") { |x| puts "setter: #{self.inspect}"; self.links[name] = x } end end def set_parent(link) if link.respond_to?(:parent) link.parent = self.parent elsif link.is_a?(Hash) link.values.each{|l| set_parent(l)} elsif link.is_a?(Enumerable) link.each{|l| set_parent(l)} end end end end
Version data entries
8 entries across 8 versions & 1 rubygems