class TypedOperation::PartiallyApplied

Experimental RBS support (using type sampling data from the type_fusion project).

# sig/typed_operation/partially_applied.rbs

class TypedOperation::PartiallyApplied
  def call: (*unused *, **unused **, ) -> nil
  def deconstruct_keys: (nil keys) -> Hash
  def initialize: (Class operation_class, *(Array[String] | Array[]) positional_args, **Hash keyword_args) -> void
  def partially_applied?: ((Array[String] | Array[]) all_positional, Hash all_kw_args) -> bool
  def positional_parameters: () -> (Array[] | Array[Symbol])
  def prepared?: () -> false
  def required_keyword_parameters: () -> (Array[Symbol] | Array[])
  def required_positional_parameters: () -> (Array[] | Array[Symbol])
  def validate_positional_arg_count!: (Integer count) -> nil
  def with: (*(Array[String] | Array[]) positional, **Hash keyword) -> (TypedOperation::Prepared | TypedOperation::PartiallyApplied)
end

def call(...)

Experimental RBS support (using type sampling data from the type_fusion project).

def call: (*unused *, **unused **, ) -> nil

This signature was generated using 1 sample from 1 application.

def call(...)
  prepared = with(...)
  return prepared.operation.call if prepared.is_a?(Prepared)
  raise MissingParameterError, "Cannot call PartiallyApplied operation #{operation_class.name} (key: #{operation_class.name}), are you expecting it to be Prepared?"
end

def curry

def curry
  Curried.new(operation_class, self)
end

def deconstruct

def deconstruct
  positional_args + keyword_args.values
end

def deconstruct_keys(keys)

Experimental RBS support (using type sampling data from the type_fusion project).

def deconstruct_keys: (nil keys) -> kw2 | String | pos1 | String | pos2 | String

This signature was generated using 1 sample from 1 application.

def deconstruct_keys(keys)
  h = keyword_args.dup
  positional_args.each_with_index { |v, i| h[positional_parameters[i]] = v }
  keys ? h.slice(*keys) : h
end

def initialize(operation_class, *positional_args, **keyword_args)

Experimental RBS support (using type sampling data from the type_fusion project).

def initialize: (Class operation_class, * positional_args, **(kw2 | String | kw3 | String | foo | String | foo | String | bar | String) keyword_args) -> void

This signature was generated using 6 samples from 1 application.

def initialize(operation_class, *positional_args, **keyword_args)
  @operation_class = operation_class
  @positional_args = positional_args
  @keyword_args = keyword_args
end

def operation

def operation
  raise MissingParameterError, "Cannot instantiate Operation #{operation_class.name} (key: #{operation_class.name}), as it is only partially applied."
end

def partially_applied?(all_positional, all_kw_args)

Experimental RBS support (using type sampling data from the type_fusion project).

type TypedOperation__PartiallyApplied_partially_applied?_all_kw_args = kw2 | String |  | foo | String | foo | String | bar | String | baz | String | kw2 | String | kw3 | String | kw1 | String | foo | String | bar | String

def partially_applied?: ((String | ) all_positional, TypedOperation__PartiallyApplied_partially_applied?_all_kw_args all_kw_args) -> bool

This signature was generated using 10 samples from 1 application.

def partially_applied?(all_positional, all_kw_args)
  missing_positional = required_positional_parameters.size - all_positional.size
  missing_keys = required_keyword_parameters - all_kw_args.keys
  missing_positional > 0 || missing_keys.size > 0
end

def positional_parameters

Experimental RBS support (using type sampling data from the type_fusion project).

def positional_parameters: () -> ( | Symbol)

This signature was generated using 10 samples from 1 application.

def positional_parameters
  @positional_parameters ||= operation_class.positional_parameters
end

def prepared?

Experimental RBS support (using type sampling data from the type_fusion project).

def prepared?: () -> false

This signature was generated using 3 samples from 1 application.

def prepared?
  false
end

def required_keyword_parameters

Experimental RBS support (using type sampling data from the type_fusion project).

def required_keyword_parameters: () -> (Symbol | Symbol | )

This signature was generated using 10 samples from 1 application.

def required_keyword_parameters
  @required_keyword_parameters ||= operation_class.required_keyword_parameters
end

def required_positional_parameters

Experimental RBS support (using type sampling data from the type_fusion project).

def required_positional_parameters: () -> ( | Symbol)

This signature was generated using 15 samples from 1 application.

def required_positional_parameters
  @required_positional_parameters ||= operation_class.required_positional_parameters
end

def to_proc

def to_proc
  method(:call).to_proc
end

def validate_positional_arg_count!(count)

Experimental RBS support (using type sampling data from the type_fusion project).

def validate_positional_arg_count!: (Integer count) -> nil

This signature was generated using 8 samples from 1 application.

def validate_positional_arg_count!(count)
  if count > positional_parameters.size
    raise ArgumentError, "Too many positional arguments provided for #{operation_class.name} (key: #{operation_class.name})"
  end
end

def with(*positional, **keyword)

Experimental RBS support (using type sampling data from the type_fusion project).

def with: (* positional, **( | bar | String | baz | String) keyword) -> (TypedOperation::Prepared | TypedOperation::PartiallyApplied)

This signature was generated using 7 samples from 1 application.

def with(*positional, **keyword)
  all_positional = positional_args + positional
  all_kw_args = keyword_args.merge(keyword)
  validate_positional_arg_count!(all_positional.size)
  if partially_applied?(all_positional, all_kw_args)
    PartiallyApplied.new(operation_class, *all_positional, **all_kw_args)
  else
    Prepared.new(operation_class, *all_positional, **all_kw_args)
  end
end