Sha256: d2e5db538a2174d54bab7ed7fe230bc8746ffea552e4c440576c92978ebd67b6
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
# frozen_string_literal: true module DeadEnd # Handles code that contains trailing slashes # by turning multiple lines with trailing slash(es) into # a single code line # # expect(code_lines.join).to eq(<<~EOM) # it "trailing \ # "slash" do # end # EOM # # lines = TrailngSlashJoin(code_lines: code_lines).call # expect(lines.first.to_s).to eq(<<~EOM) # it "trailing \ # "slash" do # EOM # class TrailingSlashJoin def initialize(code_lines:) @code_lines = code_lines @code_lines_dup = code_lines.dup end def call @trailing_lines = [] @code_lines.select(&:trailing_slash?).each do |trailing| stop_next = false lines = @code_lines[trailing.index..].take_while do |line| next false if stop_next if !line.trailing_slash? stop_next = true end true end joined_line = CodeLine.new(line: lines.map(&:original_line).join, index: trailing.index) @code_lines_dup[trailing.index] = joined_line @trailing_lines << joined_line lines.shift # Don't hide first trailing slash line lines.each(&:mark_invisible) end @code_lines_dup end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dead_end-1.2.0 | lib/dead_end/trailing_slash_join.rb |