@@ -12,7 +12,7 @@ defmodule TableRex.Renderer.Text do
12
12
# vertical_styles: [:all, :frame, :off]
13
13
14
14
# Which horizontal/vertical styles render a specific separator.
15
- @ render_horizontal_frame_styles [ :all , :frame , :header ]
15
+ @ render_horizontal_frame_styles [ :all , :frame , :header , :gfm ]
16
16
@ render_vertical_frame_styles [ :all , :frame ]
17
17
@ render_column_separators_styles [ :all ]
18
18
@ render_row_separators_styles [ :all ]
@@ -44,6 +44,7 @@ defmodule TableRex.Renderer.Text do
44
44
* `:all`: display separators between and around every row.
45
45
* `:header`: display outer and header horizontal separators only.
46
46
* `:frame`: display outer horizontal separators only.
47
+ * `:gfm`: display all separators except top and bottom to comply with github flavored markdown
47
48
* `:off`: display no horizontal separators.
48
49
49
50
`vertical_styles` controls vertical separators and can be one of:
@@ -61,6 +62,8 @@ defmodule TableRex.Renderer.Text do
61
62
render_vertical_frame? = opts [ :vertical_style ] in @ render_vertical_frame_styles
62
63
render_column_separators? = opts [ :vertical_style ] in @ render_column_separators_styles
63
64
render_row_separators? = opts [ :horizontal_style ] in @ render_row_separators_styles
65
+ render_frame_top? = opts [ :horizontal_style ] != :gfm
66
+ render_frame_bottom? = opts [ :horizontal_style ] != :gfm
64
67
table_width = table_width ( col_widths , vertical_frame?: render_vertical_frame? )
65
68
intersections = intersections ( table_width , col_widths , vertical_style: opts [ :vertical_style ] )
66
69
@@ -72,7 +75,9 @@ defmodule TableRex.Renderer.Text do
72
75
render_horizontal_frame?: render_horizontal_frame? ,
73
76
render_vertical_frame?: render_vertical_frame? ,
74
77
render_column_separators?: render_column_separators? ,
75
- render_row_separators?: render_row_separators?
78
+ render_row_separators?: render_row_separators? ,
79
+ render_frame_top?: render_frame_top? ,
80
+ render_frame_bottom?: render_frame_bottom?
76
81
}
77
82
78
83
rendered =
@@ -89,6 +94,10 @@ defmodule TableRex.Renderer.Text do
89
94
{ :ok , rendered }
90
95
end
91
96
97
+ defp render_top_frame ( { table , % Meta { render_frame_top?: false } = meta , opts , rendered } ) do
98
+ { table , meta , opts , rendered }
99
+ end
100
+
92
101
defp render_top_frame ( { table , % Meta { render_horizontal_frame?: false } = meta , opts , rendered } ) do
93
102
{ table , meta , opts , rendered }
94
103
end
@@ -145,7 +154,7 @@ defmodule TableRex.Renderer.Text do
145
154
defp render_title_separator (
146
155
{ table , meta , % { horizontal_style: horizontal_style } = opts , rendered }
147
156
)
148
- when horizontal_style in [ :all , :header ] do
157
+ when horizontal_style in [ :all , :header , :gfm ] do
149
158
line =
150
159
render_line (
151
160
meta . table_width ,
@@ -186,7 +195,7 @@ defmodule TableRex.Renderer.Text do
186
195
defp render_header_separator (
187
196
{ table , meta , % { horizontal_style: horizontal_style } = opts , rendered }
188
197
)
189
- when horizontal_style in [ :all , :header ] do
198
+ when horizontal_style in [ :all , :header , :gfm ] do
190
199
line =
191
200
render_line (
192
201
meta . table_width ,
@@ -242,6 +251,10 @@ defmodule TableRex.Renderer.Text do
242
251
243
252
defp vertically_framed ( lines , _ , _ ) , do: lines
244
253
254
+ defp render_bottom_frame ( { table , % Meta { render_frame_bottom?: false } = meta , opts , rendered } ) do
255
+ { table , meta , opts , rendered }
256
+ end
257
+
245
258
defp render_bottom_frame ( { table , % Meta { render_horizontal_frame?: false } = meta , opts , rendered } ) do
246
259
{ table , meta , opts , rendered }
247
260
end
0 commit comments