class Parlour::Types::Proc
A type which can be called as a function.
Attributes
parameters[R]
return_type[R]
Public Class Methods
new(parameters, return_type)
click to toggle source
# File lib/parlour/types.rb, line 533 def initialize(parameters, return_type) @parameters = parameters @return_type = return_type && to_type(return_type) end
Public Instance Methods
==(other)
click to toggle source
# File lib/parlour/types.rb, line 539 def ==(other) Proc === other && parameters == other.parameters && return_type == other.return_type end
describe()
click to toggle source
# File lib/parlour/types.rb, line 568 def describe # For simplicity, use RBS with pre-described parameter types rbs_params = parameters.map do |param| RbsGenerator::Parameter.new(param.name, type: param.type.describe, required: param.default.nil?) end "(#{rbs_params.map(&:to_rbs_param).join(', ')}) -> #{return_type&.describe || 'void'}" end
generate_rbi()
click to toggle source
# File lib/parlour/types.rb, line 550 def generate_rbi rbi_params = parameters.map do |param| RbiGenerator::Parameter.new(param.name, type: param.type, default: param.default) end "T.proc.params(#{rbi_params.map(&:to_sig_param).join(', ')}).#{ @return_type ? "returns(#{@return_type.generate_rbi})" : 'void' }" end
generate_rbs()
click to toggle source
# File lib/parlour/types.rb, line 560 def generate_rbs rbs_params = parameters.map do |param| RbsGenerator::Parameter.new(param.name, type: param.type, required: param.default.nil?) end "(#{rbs_params.map(&:to_rbs_param).join(', ')}) -> #{return_type&.generate_rbs || 'void'}" end