Class: Holistic::Ruby::Parser::ConstantResolution
- Inherits:
-
Object
- Object
- Holistic::Ruby::Parser::ConstantResolution
- Defined in:
- lib/holistic/ruby/parser/constant_resolution.rb
Instance Attribute Summary collapse
-
#scope ⇒ Object
readonly
Returns the value of attribute scope.
-
#scope_repository ⇒ Object
readonly
Returns the value of attribute scope_repository.
Instance Method Summary collapse
- #current ⇒ Object
-
#initialize(scope_repository:, root_scope:) ⇒ ConstantResolution
constructor
A new instance of ConstantResolution.
- #register_child_class(nesting:, location:, &block) ⇒ Object
- #register_child_module(nesting:, location:, &block) ⇒ Object
Constructor Details
#initialize(scope_repository:, root_scope:) ⇒ ConstantResolution
Returns a new instance of ConstantResolution.
7 8 9 10 11 |
# File 'lib/holistic/ruby/parser/constant_resolution.rb', line 7 def initialize(scope_repository:, root_scope:) @scope_repository = scope_repository @scope = root_scope @constant_resolution_possibilities = ["::"] end |
Instance Attribute Details
#scope ⇒ Object (readonly)
Returns the value of attribute scope.
5 6 7 |
# File 'lib/holistic/ruby/parser/constant_resolution.rb', line 5 def scope @scope end |
#scope_repository ⇒ Object (readonly)
Returns the value of attribute scope_repository.
5 6 7 |
# File 'lib/holistic/ruby/parser/constant_resolution.rb', line 5 def scope_repository @scope_repository end |
Instance Method Details
#current ⇒ Object
13 14 15 |
# File 'lib/holistic/ruby/parser/constant_resolution.rb', line 13 def current @constant_resolution_possibilities.dup end |
#register_child_class(nesting:, location:, &block) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/holistic/ruby/parser/constant_resolution.rb', line 39 def register_child_class(nesting:, location:, &block) starting_scope = @scope nesting.each do |name| @scope = ::Holistic::Ruby::Scope::Register.call( repository: @scope_repository, parent: @scope, kind: ::Holistic::Ruby::Scope::Kind::CLASS, name:, location: ) end @constant_resolution_possibilities.unshift(@scope.fully_qualified_name) block.call @scope = starting_scope @constant_resolution_possibilities.shift end |
#register_child_module(nesting:, location:, &block) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/holistic/ruby/parser/constant_resolution.rb', line 17 def register_child_module(nesting:, location:, &block) starting_scope = @scope nesting.each do |name| @scope = ::Holistic::Ruby::Scope::Register.call( repository: @scope_repository, parent: @scope, kind: ::Holistic::Ruby::Scope::Kind::MODULE, name:, location: ) end @constant_resolution_possibilities.unshift(@scope.fully_qualified_name) block.call @scope = starting_scope @constant_resolution_possibilities.shift end |