def initialize column, cell_text, attributes = {}, opts = {}
super column, :cell
if column
cell_style = (in_header_row = column.table.header_row?) ? nil : column.attributes['style']
update_attributes column.attributes
else
in_header_row = cell_style = nil
end
if attributes
@colspan = attributes.delete 'colspan'
@rowspan = attributes.delete 'rowspan'
cell_style = attributes['style'] unless in_header_row || !(attributes.key? 'style')
if opts[:strip_text]
if cell_style == :literal || cell_style == :verse
cell_text = cell_text.rstrip
cell_text = cell_text.slice 1, cell_text.length - 1 while cell_text.start_with? LF
else
cell_text = cell_text.strip
end
end
update_attributes attributes
else
@colspan = nil
@rowspan = nil
end
if cell_style == :asciidoc
parent_doctitle = @document.attributes.delete('doctitle')
inner_document_lines = cell_text.split LF, -1
if (unprocessed_line1 = inner_document_lines[0]).include? '::'
preprocessed_lines = (PreprocessorReader.new @document, [unprocessed_line1]).readlines
unless unprocessed_line1 == preprocessed_lines[0] && preprocessed_lines.size < 2
inner_document_lines.shift
inner_document_lines.unshift(*preprocessed_lines) unless preprocessed_lines.empty?
end
end unless inner_document_lines.empty?
@inner_document = Document.new(inner_document_lines, :header_footer => false, :parent => @document, :cursor => opts[:cursor])
@document.attributes['doctitle'] = parent_doctitle unless parent_doctitle.nil?
end
@text = cell_text
@style = cell_style
end