@@ -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 )
0 commit comments