Sha256: 2b08cc4c9207298cea7731a2a61aad7534dafa22db45f76a03f71edc3ccef0d0

Contents?: true

Size: 1.23 KB

Versions: 35

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

module LinkedRails
  module Controller
    module Rendering
      def _render_with_renderer_json(record, options)
        self.content_type = Mime[:json]

        return record if record.is_a?(String)
        return record.to_json if record.is_a?(Hash)

        serializer_opts = RDF::Serializers::Renderers.transform_opts(
          options,
          serializer_params
        )

        serializer = RDF::Serializers.serializer_for(record)&.new(record, serializer_opts)
        return record.to_json unless serializer

        Oj.dump(serializer.serializable_hash, mode: :compat)
      end

      def resource_body(resource)
        resource_serializer(resource).send(:render_emp_json)
      end

      def resource_hash(resource)
        resource_serializer(resource).send(:emp_json_hash)
      end

      def resource_serializer(resource)
        return if resource.nil?

        serializer_options = RDF::Serializers::Renderers.transform_opts(
          {include: resource&.try(:preview_includes)},
          serializer_params
        )
        RDF::Serializers
          .serializer_for(resource)
          &.new(resource, serializer_options)
      end

      def serializer_params
        {}
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
linked_rails-0.0.4.pre.g3aeec2263 lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.gacd5f04d4 lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.gb0b6aea40 lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.g792a1b887 lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.g58af47992 lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.g0ec6e30ca lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.g9e3bcac55 lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.g222bfeeca lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.gb254a2893 lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.g2c6c26e86 lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.ge881247c3 lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.gfabf7e9f5 lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.g8c045be3a lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.g8d7195543 lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.gfe77aae19 lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.gc866c1806 lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.g3e8f5731a lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.g58e27be7f lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.g96885856b lib/linked_rails/controller/rendering.rb
linked_rails-0.0.4.pre.g1faca9643 lib/linked_rails/controller/rendering.rb