Class: Yoda::Typing::Environment

Inherits:
Object
  • Object
show all
Defined in:
lib/yoda/typing/environment.rb

Instance Method Summary collapse

Constructor Details

#initializeEnvironment

Returns a new instance of Environment.



6
7
8
# File 'lib/yoda/typing/environment.rb', line 6

def initialize
  @binds = {}
end

Instance Method Details

#bind(key, type) ⇒ Object

Parameters:



17
18
19
20
21
22
23
# 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) ⇒ self

Parameters:

Returns:

  • (self)


27
28
29
30
31
32
# 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) ⇒ Object

Parameters:

  • key (String, Symbol)


11
12
13
# File 'lib/yoda/typing/environment.rb', line 11

def resolve(key)
  @binds[key.to_sym]
end