lib/asciidoctor/i18n/processor.rb in asciidoctor-i18n-0.1.0 vs lib/asciidoctor/i18n/processor.rb in asciidoctor-i18n-0.1.1

- old
+ new

@@ -27,15 +27,15 @@ return unless src.title src.title = translator.translate(src.title) end def process_block(src, translator) - src.lines = translator.translate(src.lines) + src.lines = translator.translate(concatenated_lines(src)) end def process_table(src, translator) - src.rows.body.each do |row| + (src.rows.head + src.rows.body).each do |row| row.each do |cell| process_table_cell(cell, translator) end end end @@ -48,9 +48,32 @@ if src.style != :asciidoc src.text = translator.translate(src.instance_variable_get(:@text)) else process_document(src.inner_document, translator) end + end + + # concat continuous lines if no hard line break exists + def concatenated_lines(src) + return src.lines if skip_concatenate?(src) + result = [src.lines.first] + src.lines.drop(1).each do |line| + if line_break?(src, result.last, line) + result.push(line) + else + result[-1] = result[-1] + " #{line}" + end + end + result + end + + def skip_concatenate?(src) + src.lines.empty? || src.content_model != :simple + end + + def line_break?(src, prev_line, next_line) + content = src.apply_subs([prev_line, next_line].join("\n"), src.subs) + content.include?('<br>') && !content.strip.end_with?('<br>') end end end end