Class: RubyLsp::RSpec::CodeLens

Inherits:
Object
  • Object
show all
Includes:
RubyLsp::Requests::Support::Common
Defined in:
lib/ruby_lsp/ruby_lsp_rspec/code_lens.rb

Instance Method Summary collapse

Constructor Details

#initialize(response_builder, uri, dispatcher, rspec_command, debug: false) ⇒ CodeLens

: (ResponseBuilders::CollectionResponseBuilder, URI::Generic, Prism::Dispatcher, String, ?debug: bool) -> void



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/ruby_lsp/ruby_lsp_rspec/code_lens.rb', line 10

def initialize(response_builder, uri, dispatcher, rspec_command, debug: false)
  @response_builder = response_builder
  # Listener is only initialized if uri.to_standardized_path is valid
  path = uri.to_standardized_path #: as !nil
  @path = path #: String
  @group_id = 1 #: Integer
  @group_id_stack = [] #: Array[Integer]
  @rspec_command = rspec_command
  @anonymous_example_count = 0 #: Integer
  dispatcher.register(self, :on_call_node_enter, :on_call_node_leave)

  @debug = debug
end

Instance Method Details

#on_call_node_enter(node) ⇒ Object

: (Prism::CallNode) -> void



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/ruby_lsp/ruby_lsp_rspec/code_lens.rb', line 25

def on_call_node_enter(node)
  case node.message
  when "example", "it", "specify", "scenario"
    name = generate_name(node)
    add_test_code_lens(node, name: name, kind: :example)
  when "context", "describe", "feature"
    return unless valid_group?(node)

    name = generate_name(node)
    add_test_code_lens(node, name: name, kind: :group)

    @group_id_stack.push(@group_id)
    @group_id += 1
  end
end

#on_call_node_leave(node) ⇒ Object

: (Prism::CallNode) -> void



42
43
44
45
46
47
48
49
# File 'lib/ruby_lsp/ruby_lsp_rspec/code_lens.rb', line 42

def on_call_node_leave(node)
  case node.message
  when "context", "describe", "feature"
    return unless valid_group?(node)

    @group_id_stack.pop
  end
end