Sha256: b67f758e970a29b5a495ecbe252cd2dc304a81da64c2153d4c1bea616f35ae37

Contents?: true

Size: 881 Bytes

Versions: 1

Compression:

Stored size: 881 Bytes

Contents

# typed: strict

module Mocktail
  class Params < T::Struct
    extend T::Sig

    prop :all, T::Array[Symbol], default: []
    prop :required, T::Array[Symbol], default: []
    prop :optional, T::Array[Symbol], default: []
    prop :rest, T.nilable(Symbol)

    sig { returns(T::Array[Symbol]) }
    def allowed
      all.select { |name| required.include?(name) || optional.include?(name) }
    end

    sig { returns(T::Boolean) }
    def rest?
      !!rest
    end
  end

  class Signature < T::Struct
    const :positional_params, Params
    const :positional_args, T::Array[T.anything]
    const :keyword_params, Params
    const :keyword_args, T::Hash[Symbol, T.anything]
    const :block_param, T.nilable(Symbol)
    const :block_arg, T.nilable(Proc), default: nil

    DEFAULT_REST_ARGS = "args"
    DEFAULT_REST_KWARGS = "kwargs"
    DEFAULT_BLOCK_PARAM = "blk"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mocktail-2.0.0 lib/mocktail/sorbet/mocktail/value/signature.rb