resources/asciidoctor/lib/docbook_compat/convert_table_cell.rb (40 lines of code) (raw):
# frozen_string_literal: true
module DocbookCompat
##
# Methods to convert table cells.
module ConvertTableCell
def convert_table_cell(cell, data_tag, allow_formatting)
result = [convert_cell_open(cell, data_tag)]
result << convert_cell_content(cell, allow_formatting)
result << '</' << data_tag << '>'
result.join
end
def convert_cell_open(cell, data_tag)
[
'<',
data_tag,
' ',
cell_open_attrs(cell).map { |k, v| %(#{k}="#{v}") }.join(' '),
'>',
].join
end
def cell_open_attrs(cell)
{
align: cell.attr('halign'),
colspan: cell.colspan == 1 ? nil : cell.colspan,
rowspan: cell.rowspan == 1 ? nil : cell.rowspan,
valign: cell.attr('valign'),
}.compact
end
def convert_cell_content(cell, allow_formatting)
if cell.inner_document
["\n", cell.content, "\n"].join
elsif allow_formatting
cell_text cell
else
cell.text
end
end
def cell_text(cell)
cell.style = :strong if cell.style == :header
"<p>#{cell.content.join "</p>\n<p>"}</p>"
end
end
end