20 lines
494 B
Ruby
20 lines
494 B
Ruby
module RKelly
|
|
module Nodes
|
|
class ResolveNode < Node
|
|
def ==(other)
|
|
return true if super
|
|
if @value =~ /^[A-Z]/
|
|
place = [Object, Module, RKelly::Nodes].find { |x|
|
|
x.const_defined?(@value.to_sym)
|
|
}
|
|
return false unless place
|
|
klass = place.const_get(@value.to_sym)
|
|
return true if klass && other.is_a?(klass) || other.value.is_a?(klass)
|
|
end
|
|
false
|
|
end
|
|
alias :=~ :==
|
|
end
|
|
end
|
|
end
|