Class: ExecutionDecider

Inherits:
Object
  • Object
show all
Includes:
EnumHelper
Defined in:
lib/execution_decider.rb

Instance Method Summary collapse

Constructor Details

#initialize(current_block_run, current_block_rerun, current_block_lang, current_block_explain = false, current_block_flamegraph = false, current_block_result = true) ⇒ ExecutionDecider

Returns a new instance of ExecutionDecider.



6
7
8
9
10
11
12
13
# File 'lib/execution_decider.rb', line 6

def initialize(current_block_run, current_block_rerun, current_block_lang, current_block_explain = false, current_block_flamegraph = false, current_block_result = true)
  @current_block_run = current_block_run
  @current_block_rerun = current_block_rerun
  @current_block_lang = current_block_lang
  @current_block_explain = current_block_explain
  @current_block_flamegraph = current_block_flamegraph
  @current_block_result = current_block_result
end

Instance Method Details

#decide(file_enum, result_block_regex_method, code_content = nil) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/execution_decider.rb', line 15

def decide(file_enum, result_block_regex_method, code_content = nil)
  return skip_execution_run_false if run_disabled?

  # For ruby blocks, check if code content contains xmpfilter results (# >>)
  if is_ruby_block? && code_content && has_xmpfilter_results?(code_content)
    return handle_inline_ruby_results
  end

  expected_header_regex = result_block_regex_method.call(@current_block_lang)
  peek1 = peek_next_line(file_enum)

  if line_matches_pattern?(peek1, expected_header_regex)
    handle_immediate_result_block(file_enum)
  elsif is_blank_line?(peek1)
    handle_blank_line_scenario(file_enum, expected_header_regex)
  elsif (@current_block_explain || @current_block_flamegraph) && is_dalibo_link?(peek1)
    handle_immediate_dalibo_link(file_enum)
  elsif @current_block_flamegraph && is_flamegraph_link?(peek1)
    handle_immediate_flamegraph_link(file_enum)
  else
    execute_without_existing_result
  end
end