Module: FastJsonapi

Defined in:
lib/fast_jsonapi.rb,
lib/fast_jsonapi/link.rb,
lib/fast_jsonapi/scalar.rb,
lib/fast_jsonapi/helpers.rb,
lib/fast_jsonapi/version.rb,
lib/fast_jsonapi/attribute.rb,
lib/fast_jsonapi/relationship.rb,
lib/fast_jsonapi/object_serializer.rb,
lib/fast_jsonapi/serialization_core.rb

Defined Under Namespace

Modules: ObjectSerializer, SerializationCore Classes: Attribute, Link, Relationship, Scalar

Constant Summary collapse

VERSION =
JSONAPI::Serializer::VERSION
MandatoryField =
Class.new(StandardError)

Class Method Summary collapse

Class Method Details

.call_proc(proc, *params) ⇒ Object

Calls either a Proc or a Lambda, making sure to never pass more parameters to it than it can receive

Parameters:

  • proc (Proc)

    the Proc or Lambda to call

  • *params (Array<Object>)

    any number of parameters to be passed to the Proc

Returns:

  • (Object)

    the result of the Proc call with the supplied parameters



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/fast_jsonapi/helpers.rb', line 8

def call_proc(proc, *params)
  # The parameters array for a lambda created from a symbol (&:foo) differs
  # from explictly defined procs/lambdas, so we can't deduce the number of
  # parameters from the array length (and differs between Ruby 2.x and 3).
  # In the case of negative arity -- unlimited/unknown argument count --
  # just send the object to act as the method receiver.
  if proc.arity.negative?
    proc.call(params.first)
  else
    proc.call(*params.take(proc.parameters.length))
  end
end