module Representable::ForCollection

Gives us Representer::for_collection and its configuration directive ::collection_representer.

Public Instance Methods

for_collection() click to toggle source
# File lib/representable/for_collection.rb, line 5
def for_collection
  # this is done at run-time, not a big fan of this. however, it saves us from inheritance/self problems.
  @collection_representer ||= collection_representer!({}) # DON'T make it inheritable as it would inherit the wrong singular.
end

Private Instance Methods

collection_representer(options={}) click to toggle source
# File lib/representable/for_collection.rb, line 23
def collection_representer(options={})
  @collection_representer = collection_representer!(options)
end
collection_representer!(options) click to toggle source
# File lib/representable/for_collection.rb, line 11
def collection_representer!(options)
  singular = self

  # what happens here is basically
  # Module.new { include Representable::JSON::Collection; ... }
  nested_builder.(
    _base:     default_nested_class,
    _features: [singular.collection_representer_class],
    _block:    ->(*) { items options.merge(:extend => singular) }
  )
end