Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
### Added
- Issue #86: Add support for header-only tables (without data rows)

### Fixed
- Issue #85: Fixed markdown spec compliance for unbordered tables with center/right aligned first columns. First column now uses left padding logic regardless of alignment to prevent invalid markdown output.

## 3.7.0 - 2025-08-29
### Added
- Issue #78: Support tab indentation for tables without a border.
Expand Down
6 changes: 6 additions & 0 deletions src/padCalculation/padCalculatorSelector.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ export class PadCalculatorSelector {
private static readonly rightLastColumn = new RightAlignment.LastColumnPadCalculator();

public select(table: Table, column: number) : BasePadCalculator {
// For unbordered tables, the first column should never have additional left padding that isn't indentation (markdown spec compliance).
// Use left alignment padding logic for the first column regardless of its actual alignment.
if (column === 0 && !table.hasLeftBorder) {
return this.leftAlignmentPadCalculator(table, column);
}

switch (table.alignments[column]) {
case Alignment.Center: return this.centerAlignmentPadCalculator(table, column);
case Alignment.Right: return this.rightAlignmentPadCalculator(table, column);
Expand Down
18 changes: 9 additions & 9 deletions test/systemTests/resources/alignCenterWithoutBorder-expected.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
Type | Range | Size
Type | Range | Size
:-----:|:-------------------------------------------------------:|:-----------------------:
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
short | -32,768 to 32,767 | Signed 16-bit integer
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
short | -32,768 to 32,767 | Signed 16-bit integer
ushort | 0 to 65,535 | Unsigned 16-bit integer
int | -2,147,483,648 to 2,147,483,647 | Signed 32-bit integer
uint | 0 to 4,294,967,295 | Unsigned 32-bit integer
long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer
ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer
int | -2,147,483,648 to 2,147,483,647 | Signed 32-bit integer
uint | 0 to 4,294,967,295 | Unsigned 32-bit integer
long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer
ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer
18 changes: 9 additions & 9 deletions test/systemTests/resources/alignRightWithoutBorder-expected.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
Type | Range | Size
Type | Range | Size
------:|--------------------------------------------------------:|------------------------:
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
short | -32,768 to 32,767 | Signed 16-bit integer
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
short | -32,768 to 32,767 | Signed 16-bit integer
ushort | 0 to 65,535 | Unsigned 16-bit integer
int | -2,147,483,648 to 2,147,483,647 | Signed 32-bit integer
uint | 0 to 4,294,967,295 | Unsigned 32-bit integer
long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer
ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer
int | -2,147,483,648 to 2,147,483,647 | Signed 32-bit integer
uint | 0 to 4,294,967,295 | Unsigned 32-bit integer
long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer
ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer
18 changes: 9 additions & 9 deletions test/systemTests/resources/alignmentsWithoutBorder-expected.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
Type | Range | Size
Type | Range | Size
------:|:-------------------------------------------------------:|------------------------:
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
short | -32,768 to 32,767 | Signed 16-bit integer
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
short | -32,768 to 32,767 | Signed 16-bit integer
ushort | 0 to 65,535 | Unsigned 16-bit integer
int | -2,147,483,648 to 2,147,483,647 | Signed 32-bit integer
uint | 0 to 4,294,967,295 | Unsigned 32-bit integer
long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer
ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer
int | -2,147,483,648 to 2,147,483,647 | Signed 32-bit integer
uint | 0 to 4,294,967,295 | Unsigned 32-bit integer
long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer
ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer
Original file line number Diff line number Diff line change
Expand Up @@ -23,26 +23,26 @@
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
* Right aligned
Type | Range | Size
Type | Range | Size
-----:|-----------------:|------------------------:
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
* Center aligned
Type | Range | Size
Type | Range | Size
:----:|:-----------------|:-----------------------:
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
* Already right aligned should remain untouched
Type | Range | Size
Type | Range | Size
-----:|-----------------:|------------------------:
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
* Already center aligned should remain untouched
Type | Range | Size
Type | Range | Size
:----:|:-----------------|:-----------------------:
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
54 changes: 27 additions & 27 deletions test/systemTests/resources/paddingOf1-expected.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,17 @@
| long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer |
| ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer |

Type | Range | Size
Type | Range | Size
:-----: | :-------------------------------------------------------: | :-----------------------:
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
short | -32,768 to 32,767 | Signed 16-bit integer
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
short | -32,768 to 32,767 | Signed 16-bit integer
ushort | 0 to 65,535 | Unsigned 16-bit integer
int | -2,147,483,648 to 2,147,483,647 | Signed 32-bit integer
uint | 0 to 4,294,967,295 | Unsigned 32-bit integer
long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer
ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer
int | -2,147,483,648 to 2,147,483,647 | Signed 32-bit integer
uint | 0 to 4,294,967,295 | Unsigned 32-bit integer
long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer
ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer

| Type | Range | Size |
| -------: | :-------------------------------------------------------: | -------------------------: |
Expand All @@ -58,17 +58,17 @@
| long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer |
| ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer |

Type | Range | Size
Type | Range | Size
------: | :-------------------------------------------------------: | ------------------------:
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
short | -32,768 to 32,767 | Signed 16-bit integer
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
short | -32,768 to 32,767 | Signed 16-bit integer
ushort | 0 to 65,535 | Unsigned 16-bit integer
int | -2,147,483,648 to 2,147,483,647 | Signed 32-bit integer
uint | 0 to 4,294,967,295 | Unsigned 32-bit integer
long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer
ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer
int | -2,147,483,648 to 2,147,483,647 | Signed 32-bit integer
uint | 0 to 4,294,967,295 | Unsigned 32-bit integer
long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer
ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer

| Type | Range | Size |
| -------: | --------------------------------------------------------: | -------------------------: |
Expand All @@ -82,17 +82,17 @@
| long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer |
| ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer |

Type | Range | Size
Type | Range | Size
------: | --------------------------------------------------------: | ------------------------:
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
short | -32,768 to 32,767 | Signed 16-bit integer
sbyte | -128 to 127 | Signed 8-bit integer
byte | 0 to 255 | Unsigned 8-bit integer
char | U+0000 to U+ffff | Unicode 16-bit character
short | -32,768 to 32,767 | Signed 16-bit integer
ushort | 0 to 65,535 | Unsigned 16-bit integer
int | -2,147,483,648 to 2,147,483,647 | Signed 32-bit integer
uint | 0 to 4,294,967,295 | Unsigned 32-bit integer
long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer
ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer
int | -2,147,483,648 to 2,147,483,647 | Signed 32-bit integer
uint | 0 to 4,294,967,295 | Unsigned 32-bit integer
long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer
ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer

Type | Range | Size
--------- | --------------------------------------------------------- | -------------------------
Expand Down
Loading
Loading