Skip to content

Commit 523cf91

Browse files
committed
add support for align none update #272
1 parent dbe7734 commit 523cf91

File tree

3 files changed

+46
-19
lines changed

3 files changed

+46
-19
lines changed

renderer/markdown.go

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,10 @@ func (m *Markdown) resolveAlignment(ctx tw.Formatting) tw.Alignment {
140140

141141
// build default alignment
142142
for i := 0; i < total; i++ {
143-
m.alignment = append(m.alignment, tw.AlignLeft)
143+
m.alignment = append(m.alignment, tw.AlignNone) // Default to AlignNone
144144
}
145145

146-
// add per colum alignment if it exits
146+
// add per column alignment if it exists
147147
for i := 0; i < total; i++ {
148148
m.alignment[i] = ctx.Row.Current[i].Align
149149
}
@@ -255,9 +255,10 @@ func (m *Markdown) formatSeparator(width int, align tw.Align) string {
255255
sb.WriteRune(':')
256256
sb.WriteString(strings.Repeat("-", targetWidth-2))
257257
sb.WriteRune(':')
258+
case tw.AlignNone:
259+
sb.WriteString(strings.Repeat("-", targetWidth))
258260
default:
259-
sb.WriteRune(':')
260-
sb.WriteString(strings.Repeat("-", targetWidth-1))
261+
sb.WriteString(strings.Repeat("-", targetWidth)) // Fallback
261262
}
262263

263264
result := sb.String()
@@ -321,7 +322,6 @@ func (m *Markdown) renderMarkdownLine(line []string, ctx tw.Formatting, isHeader
321322

322323
defaultPadding := tw.Padding{Left: tw.Space, Right: tw.Space}
323324
if !ok {
324-
325325
cellCtx = tw.CellContext{
326326
Data: tw.Empty, Align: align, Padding: defaultPadding,
327327
Width: ctx.Row.Widths.Get(colIndex), Merge: tw.MergeState{},
@@ -339,18 +339,6 @@ func (m *Markdown) renderMarkdownLine(line []string, ctx tw.Formatting, isHeader
339339

340340
// Calculate width and span
341341
span := 1
342-
343-
if align == tw.AlignNone || align == tw.Empty {
344-
if ctx.Row.Position == tw.Header && !isHeaderSep {
345-
align = tw.AlignCenter
346-
} else if ctx.Row.Position == tw.Footer {
347-
align = tw.AlignRight
348-
} else {
349-
align = tw.AlignLeft
350-
}
351-
m.logger.Debugf("renderMarkdownLine: Col %d using default align '%s'", colIndex, align)
352-
}
353-
354342
visualWidth := 0
355343
isHMergeStart := ok && cellCtx.Merge.Horizontal.Present && cellCtx.Merge.Horizontal.Start
356344
if isHMergeStart {
@@ -383,10 +371,11 @@ func (m *Markdown) renderMarkdownLine(line []string, ctx tw.Formatting, isHeader
383371
var formattedSegment string
384372
if isHeaderSep {
385373
// Use header's alignment from ctx.Row.Previous
386-
headerAlign := tw.AlignCenter // Default for headers
374+
headerAlign := align
387375
if headerCellCtx, headerOK := ctx.Row.Previous[colIndex]; headerOK {
388376
headerAlign = headerCellCtx.Align
389-
if headerAlign == tw.AlignNone || headerAlign == tw.Empty {
377+
// Preserve tw.AlignNone for separator
378+
if headerAlign != tw.AlignNone && (headerAlign == tw.Empty || headerAlign == tw.Skip) {
390379
headerAlign = tw.AlignCenter
391380
}
392381
}
@@ -403,6 +392,16 @@ func (m *Markdown) renderMarkdownLine(line []string, ctx tw.Formatting, isHeader
403392
rowAlign = headerCellCtx.Align
404393
}
405394
}
395+
if rowAlign == tw.AlignNone || rowAlign == tw.Empty {
396+
if ctx.Row.Position == tw.Header {
397+
rowAlign = tw.AlignCenter
398+
} else if ctx.Row.Position == tw.Footer {
399+
rowAlign = tw.AlignRight
400+
} else {
401+
rowAlign = tw.AlignLeft
402+
}
403+
m.logger.Debugf("renderMarkdownLine: Col %d using default align '%s'", colIndex, rowAlign)
404+
}
406405
formattedSegment = m.formatCell(content, visualWidth, rowAlign, cellCtx.Padding)
407406
}
408407
output.WriteString(formattedSegment)

tests/markdown_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,3 +260,29 @@ func TestMarkdownWithFooter(t *testing.T) {
260260
`
261261
visualCheck(t, "MarkdownWithFooter", buf.String(), expected)
262262
}
263+
264+
func TestMarkdownAlignmentNone(t *testing.T) {
265+
t.Run("AlignNone", func(t *testing.T) {
266+
var buf bytes.Buffer
267+
table := tablewriter.NewTable(&buf, tablewriter.WithRenderer(renderer.NewMarkdown()))
268+
table.Configure(func(cfg *tablewriter.Config) {
269+
cfg.Header.Alignment.PerColumn = []tw.Align{tw.AlignNone}
270+
cfg.Row.Alignment.PerColumn = []tw.Align{tw.AlignNone}
271+
cfg.Debug = true
272+
})
273+
table.Header([]string{"Header"})
274+
table.Append([]string{"Data"})
275+
table.Render()
276+
277+
expected := `
278+
| HEADER |
279+
|--------|
280+
| Data |
281+
282+
283+
`
284+
if !visualCheck(t, "AlignNone", buf.String(), expected) {
285+
t.Fatal(table.Debug())
286+
}
287+
})
288+
}

tw/tw.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ const (
1515
Skip = ""
1616
Space = " "
1717
NewLine = "\n"
18+
Column = ":"
19+
Dash = "-"
1820
)
1921

2022
// Feature State Constants

0 commit comments

Comments
 (0)