module Ghostwriter::Writer::TableWriter
Methods for processing tables
Public Instance Methods
add_table_header_underline(table, column_sizes)
click to toggle source
# File lib/ghostwriter/writer.rb, line 179 def add_table_header_underline(table, column_sizes) table.search('./thead').each do |thead| lines = column_sizes.collect { |len| @table_row * (len + 2) } underline_row = "#{ table_corner }#{ lines.join(@table_corner) }#{ @table_corner }" thead.replace("#{ thead.inner_html }#{ underline_row }\n") end end
calculate_column_sizes(table)
click to toggle source
# File lib/ghostwriter/writer.rb, line 169 def calculate_column_sizes(table) column_sizes = table.search('tr').collect do |row| row.search('th', 'td').collect do |node| node.text.length end end column_sizes.transpose.collect(&:max) end
replace_table_nodes(row, column_sizes)
click to toggle source
# File lib/ghostwriter/writer.rb, line 188 def replace_table_nodes(row, column_sizes) row.search('th', 'td').each_with_index do |node, i| new_content = node.text.ljust(column_sizes[i] + 1) node.replace("#{ @table_column } #{ new_content }") end end
replace_tables(doc)
click to toggle source
# File lib/ghostwriter/writer.rb, line 150 def replace_tables(doc) doc.css('table').each do |table| # remove whitespace between nodes table.search('//text()[normalize-space()=""]').remove column_sizes = calculate_column_sizes(table) table.search('./thead/tr', './tbody/tr', './tr').each do |row| replace_table_nodes(row, column_sizes) row.replace("#{ row.inner_html }#{ @table_column }\n") end add_table_header_underline(table, column_sizes) table.replace("\n#{ table.inner_html }\n") end end