Sha256: fc1f401bbde2e680874ec283582d183d29ae823cb867840c165dcadf7f7ef0a3
Contents?: true
Size: 995 Bytes
Versions: 12
Compression:
Stored size: 995 Bytes
Contents
require 'roar/decorator' require 'roar/json' module Spotlight ## # Serialize an exhibit page class PageRepresenter < Roar::Decorator include Roar::JSON (Spotlight::Page.attribute_names - %w(id scope exhibit_id parent_page_id content thumbnail_id)).each do |prop| property prop end property :content, exec_context: :decorator def content # get the sir-trevor objects as JSON. represented.content.as_json end delegate :content=, to: :represented end ## # Serialize the page hierarchy (e.g. for Feature pages) class NestedPageRepresenter < PageRepresenter collection :child_pages, parse_strategy: ->(fragment, _i, options) { options.represented.child_pages.find_or_initialize_by(slug: fragment['slug']) }, class: Spotlight::FeaturePage, extend: NestedPageRepresenter property :thumbnail, class: Spotlight::FeaturedImage, decorator: FeaturedImageRepresenter end end
Version data entries
12 entries across 12 versions & 1 rubygems