Sha256: bd695ffaec2e91d906bbc008a91eada16e129327e129b0c2d19fedceea2ed28f

Contents?: true

Size: 1.64 KB

Versions: 4

Compression:

Stored size: 1.64 KB

Contents

require 'roar/representer'
require 'roar/representer/feature/hypermedia'
require 'representable/json'

module Roar
  require 'representable/version'
  def self.representable_1_8? # TODO: remove me in 1.0.
    Representable::VERSION =~ /^1.8/
  end

  module Representer
    module JSON
      def self.included(base)
        base.class_eval do
          include Representer
          include Representable::JSON

          extend ClassMethods
          include InstanceMethods # otherwise Representable overrides our #to_json.
        end
      end

      module InstanceMethods
        def to_hash(*args)
          before_serialize(*args)
          super
        end

        def from_json(document, options={})
          document = '{}' if document.nil? or document.empty?

          super
        end

        # Generic entry-point for rendering.
        def serialize(*args)
          to_json(*args)
        end

        def deserialize(*args)
          from_json(*args)
        end
      end


      module ClassMethods
        def deserialize(*args)
          from_json(*args)
        end

        # TODO: move to instance method, or remove?
        def links_definition_options
          # FIXME: this doesn't belong into the generic JSON representer.
          [:links_array, {:as => :links, :class => Feature::Hypermedia::Hyperlink, :extend => HyperlinkRepresenter, :collection => true,
            :decorator_scope => true}]
        end
      end


      require "representable/json/hash"
      # Represents a hyperlink in standard roar+json hash representation.
      module HyperlinkRepresenter
        include Representable::JSON::Hash
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
roar-0.12.9 lib/roar/representer/json.rb
roar-0.12.8 lib/roar/representer/json.rb
roar-0.12.7 lib/roar/representer/json.rb
roar-0.12.6 lib/roar/representer/json.rb