class Frosting::Repository

Public Class Methods

present(resource, options = {}) click to toggle source
# File lib/frosting/repository.rb, line 8
def self.present(resource, options = {})
  klass = options.fetch(:presenter) { infer_presenter(resource) }
  klass = procify(klass).call(resource)
  klass.to_s.constantize.new(resource, options[:context])
rescue LoadError, NameError
  raise PresenterMissingError.new("No such presenter: #{klass}")
end
present_collection(collection, options = {}) click to toggle source
# File lib/frosting/repository.rb, line 16
def self.present_collection(collection, options = {})
  PresentedCollection.new(collection, options)
end

Private Class Methods

infer_presenter(resource) click to toggle source
# File lib/frosting/repository.rb, line 20
def self.infer_presenter(resource)
  "Presenters::#{resource.class.name}"
end
procify(arg) click to toggle source
# File lib/frosting/repository.rb, line 25
def self.procify(arg)
  arg.respond_to?(:call) ? arg : lambda { |_| arg }
end