class Yoda::Typing::Environment

Public Class Methods

new() click to toggle source
# File lib/yoda/typing/environment.rb, line 6
def initialize
  @binds = {}
end

Public Instance Methods

bind(key, type) click to toggle source

@param key [String, Symbol] @param type [Symbol, Model::Types::Base]

# File lib/yoda/typing/environment.rb, line 17
def bind(key, type)
  key = key.to_sym
  type = (type.is_a?(Symbol) && resolve(type)) || type
  @binds.transform_values! { |value| value == key ? type : value }
  @binds[key] = type
  self
end
bind_method_parameters(signature) click to toggle source

@param signature [Model::FunctionSignatures::Base] @return [self]

# File lib/yoda/typing/environment.rb, line 27
def bind_method_parameters(signature)
  parameter_names = signature.parameters.parameter_names
  parameter_names.each do |name|
    bind(name.gsub(/:\Z/, ''), signature.parameter_type_of(name))
  end
end
resolve(key) click to toggle source

@param key [String, Symbol]

# File lib/yoda/typing/environment.rb, line 11
def resolve(key)
  @binds[key.to_sym]
end