lib/asciidoctor/reducer/tree_processor.rb in asciidoctor-reducer-1.0.0.alpha.7 vs lib/asciidoctor/reducer/tree_processor.rb in asciidoctor-reducer-1.0.0.alpha.8

- old
+ new

@@ -1,23 +1,25 @@ # frozen_string_literal: true module Asciidoctor::Reducer class TreeProcessor < ::Asciidoctor::Extensions::TreeProcessor def process doc - unless (inc_replacements = doc.reader.x_include_replacements).length == 1 && inc_replacements[0][:drop].empty? + if (inc_replacements = doc.reader.x_include_replacements).size > 1 || !(inc_replacements[0][:drop] || []).empty? inc_replacements[0][:lines] = doc.source_lines.dup inc_replacements.reverse_each do |it| if (into = it[:into]) target_lines = inc_replacements[into][:lines] # adds extra bit of assurance that we're replacing the correct line - next unless target_lines[(index = it[:lineno])] == it[:line] + next unless target_lines[(idx = it[:lineno] - 1)] == it[:line] end lines = it[:lines] - unless (drop = it[:drop]).empty? - drop.reverse_each {|idx| ::Array === idx ? (lines[idx[0]] = idx[1]) : (lines.delete_at idx) } + unless (drop = it[:drop] || []).empty? + drop.reverse_each do |drop_it| + ::Array === drop_it ? (lines[drop_it[0] - 1] = drop_it[1]) : (lines.delete_at drop_it - 1) + end end - target_lines[index] = lines if target_lines + target_lines[idx] = lines if target_lines end source_lines = inc_replacements[0][:lines].flatten if doc.sourcemap logger = ::Asciidoctor::LoggerManager.logger opts = doc.options.merge logger: nil, parse: false, reduced: true @@ -28,10 +30,10 @@ doc = ::Asciidoctor.load source_lines, opts doc.catalog[:includes] = includes doc.parse ::Asciidoctor::LoggerManager.logger = logger else - source_lines.pop while (last = source_lines[-1]) && last.empty? + source_lines.pop while (source_lines[-1] || :eof).empty? doc.reader.source_lines = source_lines end end doc end