class Courgette::NameResolution
Attributes
definitions[R]
Public Class Methods
new(definitions)
click to toggle source
# File lib/courgette/name_resolution.rb, line 3 def initialize definitions @definitions = definitions end
Public Instance Methods
resolve(reference)
click to toggle source
# File lib/courgette/name_resolution.rb, line 7 def resolve reference matches(reference).max do |x, y| x.length <=> y.length end end
Private Instance Methods
match_name?(definition, reference)
click to toggle source
# File lib/courgette/name_resolution.rb, line 23 def match_name? definition, reference definition.last == reference.name.last end
match_scope?(definition, reference)
click to toggle source
# File lib/courgette/name_resolution.rb, line 27 def match_scope? definition, reference (0..reference.context.length).any? do |level| reference.context[0...level].flatten + reference.name == definition end end
matches(reference)
click to toggle source
# File lib/courgette/name_resolution.rb, line 16 def matches reference definitions.select do |definition| match_name?(definition, reference) && match_scope?(definition, reference) end end