class SimpleJsonapi::Node::ObjectMeta

Represents a meta object (a collection of meta members).

@!attribute [r] object

@return [Object]

@!attribute [r] meta_definitions

@return [Hash{Symbol => Definition::Meta}]

Attributes

meta_definitions[R]
object[R]

Public Class Methods

new(object:, meta_definitions:, **options) click to toggle source

@param object [Object] @param meta_definitions [Hash{Symbol => Definition::Meta}] @param options see {Node::Base#initialize} for additional parameters

Calls superclass method SimpleJsonapi::Node::Base::new
# File lib/simple_jsonapi/node/object_meta.rb, line 14
def initialize(object:, meta_definitions:, **options)
  super(options)

  @object = object
  @meta_definitions = meta_definitions || {}
end

Public Instance Methods

as_jsonapi() click to toggle source

@return [Hash{Symbol => Hash}]

# File lib/simple_jsonapi/node/object_meta.rb, line 22
def as_jsonapi
  if meta_definitions_to_render.any?
    json = {}
    meta_definitions_to_render.each do |name, defn|
      json[name] = evaluate(defn.value_proc, object)
    end
    { meta: json }
  else
    {}
  end
end

Private Instance Methods

meta_definitions_to_render() click to toggle source
# File lib/simple_jsonapi/node/object_meta.rb, line 36
def meta_definitions_to_render
  @meta_definitions_to_render ||= @meta_definitions.select { |_, defn| render?(defn, object) }
end