Class: RubyLsp::FactoryBot::IndexingEnhancement

Inherits:
RubyIndexer::Enhancement
  • Object
show all
Defined in:
lib/ruby_lsp/factory_bot/indexing_enhancement.rb

Constant Summary collapse

FACTORIES_PATH =
"spec/factories"

Instance Method Summary collapse

Constructor Details

#initializeIndexingEnhancement

Returns a new instance of IndexingEnhancement.



8
9
10
11
12
# File 'lib/ruby_lsp/factory_bot/indexing_enhancement.rb', line 8

def initialize(...)
  super
  @inside_define_block = false
  @factory_stack = []
end

Instance Method Details

#on_call_node_enter(node) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/ruby_lsp/factory_bot/indexing_enhancement.rb', line 16

def on_call_node_enter(node)
  @inside_define_block = true if node.message == "define"
  return unless @inside_define_block

  case node.message
  when "factory"
    @factory_stack << register_factory(node)
  when "trait"
    register_trait(node)
  when "sequence"
    register_sequence(node) if @factory_stack.empty?
  end
end

#on_call_node_leave(node) ⇒ Object



30
31
32
33
# File 'lib/ruby_lsp/factory_bot/indexing_enhancement.rb', line 30

def on_call_node_leave(node)
  @inside_define_block = false if node.message == "define"
  @factory_stack.pop if node.message == "factory"
end