Class: SimpleJsonapi::Node::Document::Base Abstract

Inherits:
Base
  • Object
show all
Defined in:
lib/simple_jsonapi/node/document/base.rb

Overview

This class is abstract.

Represents a JSONAPI document.

Direct Known Subclasses

Collection, Errors, Singular

Instance Attribute Summary

Attributes inherited from Base

#extras, #fields_spec, #include_spec, #root_node, #serializer, #serializer_inferrer, #sort_spec

Instance Method Summary collapse

Constructor Details

#initialize(links: nil, meta: nil, **options) ⇒ Base

Returns a new instance of Base.

Parameters:

  • links (Hash{Symbol => String,Hash}) (defaults to: nil)
  • meta (Hash{Symbol => Object}) (defaults to: nil)
  • options

    see Base#initialize for additional parameters



8
9
10
11
12
13
14
15
16
# File 'lib/simple_jsonapi/node/document/base.rb', line 8

def initialize(links: nil, meta: nil, **options)
  @data_node = @links_json = @meta_json = @errors_node = nil

  super(options.merge(root_node: self))
  validate_options!(options.merge(links: links, meta: meta))

  @links_json = links if links&.any?
  @meta_json = meta if meta&.any?
end

Instance Method Details

#append_included_resource(resource_node) ⇒ Node::Resource::Full

Parameters:

Returns:



40
41
42
# File 'lib/simple_jsonapi/node/document/base.rb', line 40

def append_included_resource(resource_node)
  included_node.append_included_resource(resource_node)
end

#as_jsonapiHash{Symbol => Hash}

Returns:

  • (Hash{Symbol => Hash})


19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/simple_jsonapi/node/document/base.rb', line 19

def as_jsonapi
  doc = {}

  doc.merge!(@data_node.as_jsonapi) if @data_node
  doc.merge!(@errors_node.as_jsonapi) if @errors_node
  doc.merge!(included_node.as_jsonapi)
  doc[:links] = @links_json if @links_json
  doc[:meta] = @meta_json if @meta_json
  # jsonapi

  doc
end

#included_resource?(resource_node) ⇒ Boolean

Parameters:

Returns:

  • (Boolean)


34
35
36
# File 'lib/simple_jsonapi/node/document/base.rb', line 34

def included_resource?(resource_node)
  included_node.included_resource?(resource_node)
end