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