class ActiveContainer::Wrapper
Attributes
record[R]
Public Class Methods
new(record)
click to toggle source
# File lib/active_container/wrapper.rb, line 5 def initialize(record) if record.is_a?(Hash) @record = self.class.object_class.new(record) else @record = record end end
object_class()
click to toggle source
# File lib/active_container/wrapper.rb, line 37 def object_class return nil if self == Wrapper return @object_class if defined?(@object_class) object_class = self.name.gsub(/Wrapper/, '') @object_class = Kernel.const_get(object_class) end
wrap(record)
click to toggle source
# File lib/active_container/wrapper.rb, line 14 def wrap(record) return nil unless record if self == Wrapper wrapper_name = record.class.name wrapper_name += 'Wrapper' wrapper = Kernel.const_get(wrapper_name) wrapper.new(record) else self.new record end end
wrap_collection(records)
click to toggle source
# File lib/active_container/wrapper.rb, line 29 def wrap_collection(records) return [] unless records records.map do |record| self.wrap record end end
Private Class Methods
delegate(*delegates)
click to toggle source
# File lib/active_container/wrapper.rb, line 46 def delegate(*delegates) delegates.each do |delegate| define_method delegate do |*args| @record.send(delegate, *args) end unless self.method_defined?("#{delegate}=") define_method "#{delegate}=" do |*args| @record.send("#{delegate}=", *args) end end end end
wrap_delegate(*delegates)
click to toggle source
# File lib/active_container/wrapper.rb, line 60 def wrap_delegate(*delegates) delegates.each do |delegate| # Using specific wrappers here seems to work, # but introduces dependencies at load time # that may be unavoidably circular. define_method delegate do |*args| result = @record.send(delegate, *args) if delegate.to_s.singularize == delegate.to_s Wrapper.wrap result else Wrapper.wrap_collection result end end end end
Public Instance Methods
wrapped?()
click to toggle source
# File lib/active_container/wrapper.rb, line 86 def wrapped? true end