class SimpleJsonapi::Parameters::FieldsSpec
Represents the fields
parameter as defined by the JSONAPI spec.
Public Class Methods
new(specs = {})
click to toggle source
@param specs [Hash{Symbol => String,Array<String>,Array<Symbol>}]
The hash keys are resource types, and the values are lists of field names to render in the output.
# File lib/simple_jsonapi/parameters/fields_spec.rb, line 16 def initialize(specs = {}) @data = {} merge(specs) if specs.present? end
wrap(fields)
click to toggle source
Wraps a fields
parameter in a {FieldsSpec} instance. @param fields [Hash{Symbol => String},FieldsSpec]
# File lib/simple_jsonapi/parameters/fields_spec.rb, line 6 def self.wrap(fields) if fields.is_a?(FieldsSpec) fields else FieldsSpec.new(fields) end end
Public Instance Methods
[](type)
click to toggle source
@param type [String,Symbol] @return [Array<Symbol>]
# File lib/simple_jsonapi/parameters/fields_spec.rb, line 36 def [](type) @data[type.to_sym] end
all_fields?(type)
click to toggle source
@param type [String,Symbol]
# File lib/simple_jsonapi/parameters/fields_spec.rb, line 41 def all_fields?(type) @data[type.to_sym].nil? end
merge(specs = {})
click to toggle source
@param specs [Hash{Symbol => String,Array<String>,Array<Symbol>}]
The hash keys are resource types, and the values are lists of field names to render in the output.
@return [self]
# File lib/simple_jsonapi/parameters/fields_spec.rb, line 24 def merge(specs = {}) specs.each do |type, fields| @data[type.to_sym] = Array .wrap(fields) .flat_map { |s| s.to_s.split(",") } .map { |s| s.strip.to_sym } end self end