5 Commits

Author SHA1 Message Date
29ebb9a8d1 Merge pull request 'Fix issue where Word Online wasn't properly able to render our tables' (#5) from bug/tables-word-online into main
All checks were successful
CI Pipeline / build (push) Successful in 12s
Reviewed-on: Kaukus/ezdoc#5
2025-12-02 12:12:39 +00:00
6cbc9e4d98 Fix issue where Word Online wasn't properly able to render our tables
All checks were successful
CI Pipeline / build (pull_request) Successful in 12s
2025-12-02 12:26:40 +01:00
c7020140f4 Merge pull request 'Fix bug with heading styles' (#4) from bug/heading-styles into main
All checks were successful
CI Pipeline / build (push) Successful in 11s
Reviewed-on: Kaukus/ezdoc#4
2025-12-02 11:14:04 +00:00
f551a22819 Fix bug with heading styles
All checks were successful
CI Pipeline / build (pull_request) Successful in 12s
2025-12-02 12:11:30 +01:00
e9a3908ea6 Merge pull request 'Implement styles' (#3) from feature/styles into main
All checks were successful
CI Pipeline / build (push) Successful in 11s
Reviewed-on: Kaukus/ezdoc#3
2025-12-02 11:03:36 +00:00
2 changed files with 24 additions and 13 deletions

View File

@@ -67,13 +67,13 @@ module Ezdoc
end
def register_built_in_styles
# Headings
define_style :heading1, size: 24, bold: true
define_style :heading2, size: 18, bold: true
define_style :heading3, size: 14, bold: true
define_style :heading4, size: 12, bold: true
define_style :heading5, size: 11, bold: true, italic: true
define_style :heading6, size: 10, bold: true, italic: true
# Headings (spacing_before ensures they're rendered as paragraph styles)
define_style :heading1, size: 24, bold: true, spacing_before: 240, spacing_after: 120
define_style :heading2, size: 18, bold: true, spacing_before: 200, spacing_after: 100
define_style :heading3, size: 14, bold: true, spacing_before: 160, spacing_after: 80
define_style :heading4, size: 12, bold: true, spacing_before: 120, spacing_after: 60
define_style :heading5, size: 11, bold: true, italic: true, spacing_before: 100, spacing_after: 40
define_style :heading6, size: 10, bold: true, italic: true, spacing_before: 80, spacing_after: 40
# Other built-in styles
define_style :title, size: 26, bold: true, align: :center

View File

@@ -130,27 +130,38 @@ module Ezdoc
end
def render_table(xml, table)
column_count = table.rows.first&.cells&.size || 1
col_width = 5000 / column_count
xml["w"].tbl do
xml["w"].tblPr do
xml["w"].tblW("w:w" => "0", "w:type" => "auto")
xml["w"].tblW("w:w" => "5000", "w:type" => "pct")
xml["w"].tblBorders do
%w[top left bottom right insideH insideV].each do |border|
xml["w"].send(border, "w:val" => "single", "w:sz" => "4", "w:color" => "000000")
xml["w"].send(border, "w:val" => "single", "w:sz" => "4", "w:space" => "0", "w:color" => "000000")
end
end
end
table.rows.each { |row| render_table_row(xml, row) }
xml["w"].tblGrid do
column_count.times do
xml["w"].gridCol("w:w" => col_width.to_s)
end
end
table.rows.each { |row| render_table_row(xml, row, col_width) }
end
end
def render_table_row(xml, row)
def render_table_row(xml, row, col_width)
xml["w"].tr do
row.cells.each { |cell| render_table_cell(xml, cell) }
row.cells.each { |cell| render_table_cell(xml, cell, col_width) }
end
end
def render_table_cell(xml, cell)
def render_table_cell(xml, cell, col_width)
xml["w"].tc do
xml["w"].tcPr do
xml["w"].tcW("w:w" => col_width.to_s, "w:type" => "pct")
end
xml["w"].p do
cell.runs.each { |run| render_run(xml, run) }
end