Module: Marameters::Signatures

Defined in:
lib/marameters/signatures/super.rb,
lib/marameters/signatures/builder.rb,
lib/marameters/signatures/defaulter.rb,
lib/marameters/signatures/forwarder.rb,
lib/marameters/signatures/inheritor.rb

Defined Under Namespace

Classes: Builder, Inheritor, Super

Constant Summary collapse

Defaulter =

Computes a method parameter’s default value.

lambda do |value, extractor: Sourcers::Function.new|
  case value
    when Proc
      fail TypeError, "Use procs instead of lambdas for defaults." if value.lambda?
      fail ArgumentError, "Avoid using parameters for proc defaults." if value.arity.nonzero?

      extractor.call value
    when String then value.dump
    when Symbol then value.inspect
    when nil then "nil"
    else value
  end
end
Forwarder =

Builds single argument for super method’s signature when argument forwarding.

lambda do |kind, name = nil|
  case kind
    when :req, :opt then name
    when :rest then "*#{name}"
    when :nokey then ""
    when :keyreq, :key then "#{name}:"
    when :keyrest then "**#{name}"
    when :block then "&#{name}"
    else fail ArgumentError, "Unable to forward unknown kind: #{kind.inspect}."
  end
end