class Orbacle::Builder::Context

Constants

AnalyzedKlass

Attributes

analyzed_klass[R]
analyzed_method[R]
filepath[R]
lenv[R]
nesting[R]
selfie[R]

Public Class Methods

new(filepath, selfie, nesting, analyzed_klass, analyzed_method, lenv) click to toggle source
# File lib/orbacle/builder/context.rb, line 8
def initialize(filepath, selfie, nesting, analyzed_klass, analyzed_method, lenv)
  @filepath = filepath.freeze
  @selfie = selfie.freeze
  @nesting = nesting.freeze
  @analyzed_klass = analyzed_klass.freeze
  @analyzed_method = analyzed_method.freeze
  @lenv = lenv.freeze
end

Public Instance Methods

analyzed_klass_id() click to toggle source
# File lib/orbacle/builder/context.rb, line 55
def analyzed_klass_id
  analyzed_klass.klass_id
end
lenv_fetch(key) click to toggle source
# File lib/orbacle/builder/context.rb, line 47
def lenv_fetch(key)
  lenv.fetch(key, [])
end
merge_lenv(new_lenv) click to toggle source
# File lib/orbacle/builder/context.rb, line 43
def merge_lenv(new_lenv)
  self.class.new(filepath, selfie, nesting, analyzed_klass, analyzed_method, lenv.merge(new_lenv))
end
scope() click to toggle source
# File lib/orbacle/builder/context.rb, line 27
def scope
  nesting.to_scope
end
with_analyzed_klass(new_klass_id) click to toggle source
# File lib/orbacle/builder/context.rb, line 31
def with_analyzed_klass(new_klass_id)
  self.class.new(filepath, selfie, nesting, AnalyzedKlass.new(new_klass_id, :public), analyzed_method, lenv)
end
with_analyzed_method(new_analyzed_method_id) click to toggle source
# File lib/orbacle/builder/context.rb, line 39
def with_analyzed_method(new_analyzed_method_id)
  self.class.new(filepath, selfie, nesting, analyzed_klass, new_analyzed_method_id, lenv)
end
with_lenv(new_lenv) click to toggle source
# File lib/orbacle/builder/context.rb, line 51
def with_lenv(new_lenv)
  self.class.new(filepath, selfie, nesting, analyzed_klass, analyzed_method, new_lenv)
end
with_merged_lenvs(lenv1, lenv2) click to toggle source
# File lib/orbacle/builder/context.rb, line 59
def with_merged_lenvs(lenv1, lenv2)
  final_lenv = {}

  var_names = (lenv1.keys + lenv2.keys).uniq
  var_names.each do |var_name|
    final_lenv[var_name] = (lenv1.fetch(var_name, []) + lenv2.fetch(var_name, [])).uniq
  end

  with_lenv(final_lenv)
end
with_nesting(new_nesting) click to toggle source
# File lib/orbacle/builder/context.rb, line 23
def with_nesting(new_nesting)
  self.class.new(filepath, selfie, new_nesting, analyzed_klass, analyzed_method, lenv)
end
with_selfie(new_selfie) click to toggle source
# File lib/orbacle/builder/context.rb, line 19
def with_selfie(new_selfie)
  self.class.new(filepath, new_selfie, nesting, analyzed_klass, analyzed_method, lenv)
end
with_visibility(new_visibility) click to toggle source
# File lib/orbacle/builder/context.rb, line 35
def with_visibility(new_visibility)
  self.class.new(filepath, selfie, nesting, AnalyzedKlass.new(analyzed_klass.klass_id, new_visibility), analyzed_method, lenv)
end