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