class Orbacle::Nesting
Attributes
levels[R]
Public Class Methods
empty()
click to toggle source
# File lib/orbacle/nesting.rb, line 33 def self.empty new([]) end
new(levels)
click to toggle source
# File lib/orbacle/nesting.rb, line 37 def initialize(levels) @levels = levels end
Public Instance Methods
==(other)
click to toggle source
# File lib/orbacle/nesting.rb, line 41 def ==(other) levels.size == other.levels.size && levels.zip(other.levels).all? {|l1, l2| l1 == l2 } end
decrease_nesting()
click to toggle source
# File lib/orbacle/nesting.rb, line 56 def decrease_nesting Nesting.new(levels[0..-2]) end
empty?()
click to toggle source
# File lib/orbacle/nesting.rb, line 60 def empty? levels.empty? end
increase_nesting_const(const_ref)
click to toggle source
# File lib/orbacle/nesting.rb, line 48 def increase_nesting_const(const_ref) Nesting.new(levels + [ConstLevel.new(const_ref)]) end
increase_nesting_self()
click to toggle source
# File lib/orbacle/nesting.rb, line 52 def increase_nesting_self Nesting.new(levels + [ClassConstLevel.new(to_scope)]) end
to_scope()
click to toggle source
# File lib/orbacle/nesting.rb, line 64 def to_scope levels.inject(Scope.empty) do |scope, nesting_level| if nesting_level.eigenclass? Scope.new(nesting_level.full_name.split("::").reject(&:empty?), nesting_level.eigenclass?) else scope.increase_by_ref(nesting_level.const_ref) end end end