lib/haml_lint/ruby_extraction/interpolation_chunk.rb
# frozen_string_literal: true module HamlLint::RubyExtraction # Deals with interpolation within a plain text, filter, etc. # Can only handling single line interpolation, so will be skipped if it takes # more than one line or if the correction takes more than one line. # # Stores the char index to know where in the line to do the replacements. class InterpolationChunk < BaseChunk def initialize(*args, start_char_index:, **kwargs) super(*args, **kwargs) @start_char_index = start_char_index end def transfer_correction_logic(coordinator, to_ruby_lines, haml_lines) return if @ruby_lines.size != 1 return if to_ruby_lines.size != 1 from_ruby_line = @ruby_lines.first.partition(coordinator.script_output_prefix).last to_ruby_line = to_ruby_lines.first.partition(coordinator.script_output_prefix).last haml_line = haml_lines[@haml_line_index] haml_line[@start_char_index...(@start_char_index + from_ruby_line.size)] = to_ruby_line end end end