class DeadEnd::HeredocBlockParse
Takes in a source, and returns blocks containing each heredoc
Attributes
code_lines[R]
lex[R]
Public Class Methods
new(source:, code_lines: )
click to toggle source
# File lib/dead_end/heredoc_block_parse.rb, line 8 def initialize(source:, code_lines: ) @code_lines = code_lines @lex = LexAll.new(source: source) end
Public Instance Methods
call()
click to toggle source
# File lib/dead_end/heredoc_block_parse.rb, line 13 def call blocks = [] beginning = [] @lex.each do |lex| case lex.type when :on_heredoc_beg beginning << lex.line when :on_heredoc_end start_index = beginning.pop - 1 end_index = lex.line - 1 blocks << CodeBlock.new(lines: code_lines[start_index..end_index]) end end blocks end