Sha256: e087d1d2c4fc3ba133e66531eedf9bd156632eb05066f2e0e7b0dea981f4e6ae
Contents?: true
Size: 824 Bytes
Versions: 1
Compression:
Stored size: 824 Bytes
Contents
class DelegatedPresenter::Base < SimpleDelegator @@presentable = {} def initialize(object) raise Presenter::NotPresentable, "#{self.presenter_class} cannot present a #{object.class}" unless self.presentable.include?(object.class.name) super(object) freeze end alias_method :presenter_class, :class def class __getobj__.class end def presentable (@@presentable[self.presenter_class.name] || []) end def self.presents(*objects) @@presentable[name] ||= [] @@presentable[name] += objects.flatten.collect{ |i| i.to_s.camelize.singularize } end def self.inherited(subclass) presentable_class = subclass.name.gsub(/Presenter$/,'') presentable_class.constantize rescue nil subclass.presents presentable_class if Object.const_defined?(presentable_class) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
delegated_presenter-0.1.0 | lib/delegated_presenter/base.rb |