Module: NanDoc::SharedAttrReader
- Included in:
- Helpers::NanDocHelpers::SiteMap
- Defined in:
- lib/nandoc/support-modules.rb
Instance Method Summary collapse
-
#shared_attr_reader(*list) ⇒ Object
this is a specialized form of delegator pattern: let one object use the responses from another object for a set of accessors.
Instance Method Details
#shared_attr_reader(*list) ⇒ Object
this is a specialized form of delegator pattern: let one object use the responses from another object for a set of accessors
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 |
# File 'lib/nandoc/support-modules.rb', line 229 def shared_attr_reader *list fail('no inehiritance yet') if method_defined?(:shared=) sm = Module.new name = self.to_s+'::SharedAttrReaders' sing = class << sm; self end sing.send(:define_method, :name){name} sing.send(:alias_method, :inspect, :name) list.each do |attrib| sm.send(:define_method, attrib){ shared.send(attrib) } end fail('no') if method_defined?(:shared) define_method(:shared){ self } define_method(:shared=) do |source| sing = class << self; self end sing.send(:define_method, :shared){ source } sing.send(:include, sm) # wow cool that this works w/o having # to Module#undef_method source end nil end |