Skip to content

Commit 0a77c1a

Browse files
committed
Ensure that document formatting also works for tables with alignments
1 parent c94e145 commit 0a77c1a

6 files changed

Lines changed: 90 additions & 4 deletions

File tree

src/modelFactory/selectionInterpreter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export class SelectionInterpreter {
1414
return this.allRows(selection).filter((v, i) => i == 1)[0];
1515
}
1616

17-
private splitLine(line: string): string[] {
17+
public splitLine(line: string): string[] {
1818
if (line == null || line.length == 0) return [];
1919

2020
let result:string[] = [],

src/modelFactory/tableValidator.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,13 @@ export class TableValidator {
1717
return sizeValid && this.hasValidSeparators(this._selectionInterpreter.separator(selection));
1818
}
1919

20-
private hasValidSeparators(separator: string[]): boolean {
20+
public lineIsValidSeparator(separatorLine: string): boolean {
21+
return this.hasValidSeparators(
22+
this._selectionInterpreter.splitLine(separatorLine)
23+
);
24+
}
25+
26+
public hasValidSeparators(separator: string[]): boolean {
2127
if (!separator || separator.length < 1 || !separator[1])
2228
return false;
2329

src/tableFinding/tableFinder.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { EOL } from "os";
33
import { TableValidator } from "../modelFactory/tableValidator";
44

55
export class TableFinder {
6-
private readonly _separatorMarker = "-|-";
76
constructor(
87
private readonly _tableValidator: TableValidator
98
) { }
@@ -28,7 +27,7 @@ export class TableFinder {
2827
// look for the separator row, assume table starts 1 row before & ends when invalid
2928
let rowIndex = startAtRow;
3029
while (rowIndex < rows.length) {
31-
let table = rows[rowIndex].indexOf(this._separatorMarker) >= 0
30+
let table = this._tableValidator.lineIsValidSeparator(rows[rowIndex])
3231
? this.getTableFromSeparatorIndex(rows, rowIndex)
3332
: null;
3433
if (table != null) return table;
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
hello world
2+
| Type | Range | Size |
3+
|-------:|--------------------------------------------------------:|-------------------------:|
4+
| sbyte | -128 to 127 | Signed 8-bit integer |
5+
| byte | 0 to 255 | Unsigned 8-bit integer |
6+
| char | U+0000 to U+ffff | Unicode 16-bit character |
7+
| short | -32,768 to 32,767 | Signed 16-bit integer |
8+
| ushort | 0 to 65,535 | Unsigned 16-bit integer |
9+
| int | -2,147,483,648 to 2,147,483,647 | Signed 32-bit integer |
10+
| uint | 0 to 4,294,967,295 | Unsigned 32-bit integer |
11+
| long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | Signed 64-bit integer |
12+
| ulong | 0 to 18,446,744,073,709,551,615 | Unsigned 64-bit integer |
13+
14+
Type | Range | Size
15+
-------|-------------------------------------------------------------|-------------------------
16+
sbyte | -128 `|to|` 127 | Signed 8-bit integer
17+
byte | 0 `|to|` 255 | Unsigned 8-bit integer
18+
char | U+0000 `|to|` U+ffff | Unicode 16-bit character
19+
short | -32,768 `|to|` 32,767 | Signed 16-bit integer
20+
ushort | 0 `|to|` 65,535 | Unsigned 16-bit integer
21+
int | -2,147,483,648 `|to|` 2,147,483,647 | Signed 32-bit integer
22+
uint | 0 `|to|` 4,294,967,295 | Unsigned 32-bit integer
23+
long | -9,223,372,036,854,775,808 `|to|` 9,223,372,036,854,775,807 | Signed 64-bit integer
24+
ulong | 0 `|to|` 18,446,744,073,709,551,615 | Unsigned 64-bit integer
25+
Type | | Range | Size
26+
-------|---|---------------------------------|-------------------------
27+
sbyte | | -128 to 127 | Signed 8-bit integer
28+
byte | | 0 to 255 | Unsigned 8-bit integer
29+
char | | U+0000 to U+ffff | Unicode 16-bit character
30+
short | | -32,768 to 32,767 | Signed 16-bit integer
31+
ushort | | 0 to 65,535 | Unsigned 16-bit integer
32+
int | | -2,147,483,648 to 2,147,483,647 | Signed 32-bit integer
33+
uint | | 0 to 4,294,967,295 | Unsigned 32-bit integer
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
hello world
2+
|Type|Range|Size|
3+
|-:|-:|-:|
4+
|sbyte|-128 to 127|Signed 8-bit integer|
5+
|byte|0 to 255|Unsigned 8-bit integer|
6+
|char|U+0000 to U+ffff|Unicode 16-bit character|
7+
|short|-32,768 to 32,767|Signed 16-bit integer|
8+
|ushort|0 to 65,535|Unsigned 16-bit integer|
9+
|int|-2,147,483,648 to 2,147,483,647|Signed 32-bit integer|
10+
|uint|0 to 4,294,967,295|Unsigned 32-bit integer|
11+
|long|-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807|Signed 64-bit integer|
12+
|ulong|0 to 18,446,744,073,709,551,615|Unsigned 64-bit integer|
13+
14+
Type | Range| Size
15+
-|-|-
16+
sbyte | -128 `|to|` 127| Signed 8-bit integer
17+
byte| 0 `|to|` 255| Unsigned 8-bit integer
18+
char| U+0000 `|to|` U+ffff| Unicode 16-bit character
19+
short| -32,768 `|to|` 32,767| Signed 16-bit integer
20+
ushort| 0 `|to|` 65,535| Unsigned 16-bit integer
21+
int| -2,147,483,648 `|to|` 2,147,483,647| Signed 32-bit integer
22+
uint| 0 `|to|` 4,294,967,295| Unsigned 32-bit integer
23+
long| -9,223,372,036,854,775,808 `|to|` 9,223,372,036,854,775,807| Signed 64-bit integer
24+
ulong| 0 `|to|` 18,446,744,073,709,551,615| Unsigned 64-bit integer
25+
Type || Range| Size
26+
-|-|-|-
27+
sbyte || -128 to 127| Signed 8-bit integer
28+
byte|| 0 to 255| Unsigned 8-bit integer
29+
char|| U+0000 to U+ffff| Unicode 16-bit character
30+
short|| -32,768 to 32,767| Signed 16-bit integer
31+
ushort|| 0 to 65,535| Unsigned 16-bit integer
32+
int|| -2,147,483,648 to 2,147,483,647| Signed 32-bit integer
33+
uint|| 0 to 4,294,967,295| Unsigned 32-bit integer

test/unitTests/tableFinding/tableFinder.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,21 @@ suite("TableFinder tests", () => {
9999
assert.deepStrictEqual(tableRanges[1], new vscode.Range(9, 0, 12, 27));
100100
});
101101

102+
test("getTables() for table with alignments the expected range is returned", () => {
103+
let sut = getSut();
104+
let document = makeDocument(`no table on first line
105+
|Primitive Type|Size(bit)|Wrapper
106+
|-:|-|-
107+
|short|16|Short
108+
|int|32|Integer
109+
no table on last line`);
110+
111+
let tableRanges = sut.getTables(document);
112+
113+
assert.equal(tableRanges.length, 1);
114+
assert.deepStrictEqual(tableRanges[0], new vscode.Range(1, 0, 4, 27));
115+
});
116+
102117
function getSut() {
103118
return new TableFinder(new TableValidator(new SelectionInterpreter(true)));
104119
}

0 commit comments

Comments
 (0)