Present a object with a symbol

present user, context: :public
# => present user, PublicUserPresenter

present user, :public, :crazy
# => present user, PublicPresenter, CrazyPresenter

# best way to handle this?
present user, :public, :user
# => present user, PublicPresenter, UserPresenter

Helper class methods

class UserPresenter < Resubject::Presenter
  # formats to default (to_s), only if present
  # object.created_at
  timestamp :created_at

  # formats to long (to_s(:long))
  timestamp :created_at, format: :long

  # multiple
  timestamps :created_at, :updated_at

  autolink!
  # create object.link

  # currency format
  currency :price

  # change options
  currency :price, format: 'whatever'
end

Test helpers

describe UserPresenter do
  it 'has currency' do
    user = stub price: 200.0
    presented(user).currency.should == '$200.00'
  end

  # or

  subject { UserPresenter.new(stub(price: 200.0)) }

  it 'has currency' do
    presented.currency.should == '$200'
  end
end