Skip to content

Commit 6540656

Browse files
committed
Replace certain characters + whitespaces in RPG symbol name
1 parent 7f22262 commit 6540656

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

src/views/results/codegen.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,15 @@ test('Column to RPG symbol', () => {
1111
name = columnToRpgFieldName({display_size: 0, label: 'änderungs- benutzer ', name: 'ANDBEN', type: 'CHAR', precision: 10, scale: 0}, 'Name');
1212
expect(name).toBe('andben');
1313

14+
name = columnToRpgFieldName({display_size: 0, label: 'Cust.number....:', name: 'ANDBEN', type: 'CHAR', precision: 10, scale: 0}, 'Label');
15+
expect(name).toBe('cust_number');
16+
17+
name = columnToRpgFieldName({display_size: 0, label: 'Country:', name: 'ANDBEN', type: 'CHAR', precision: 10, scale: 0}, 'Label');
18+
expect(name).toBe('country');
19+
20+
name = columnToRpgFieldName({display_size: 0, label: 'På bærtur', name: 'ANDBEN', type: 'CHAR', precision: 10, scale: 0}, 'Label');
21+
expect(name).toBe('paa_baertur');
22+
1423
name = columnToRpgFieldName({display_size: 0, label: '', name: '0001', type: 'INTEGER', precision: 0, scale: 0}, 'Name');
1524
expect(name).toBe('col0001');
1625
});

src/views/results/codegen.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,18 @@ export function queryResultToRpgDs(result: QueryResult<any>, source: string = 'N
1212

1313
export function columnToRpgFieldName(column: ColumnMetaData, source: string = 'Name') : string {
1414
let name = source === 'Label' ? column.label.toLowerCase().trim() : column.name.toLowerCase().trim();
15-
name = name.replace(/\u00fc/g, "u"); // ü
16-
name = name.replace(/\u00e4/g, "a"); // ä
17-
name = name.replace(/\u00e4/g, "o"); // ö
18-
name = name.replace(/\u00df/g, "s"); // sharp s/Eszett
19-
name = name.replace(/\s+/g, "_").replace(/[^a-zA-Z0-9_]/g, '').trim(); // space to underscore and remove non-alphanumeric chars
15+
name = name.replace(/\u00fc/g, "u") // ü -> u
16+
.replace(/\u00e4/g, "a") // ä -> a
17+
.replace(/\u00e4/g, "o") // ö -> o
18+
.replace(/\u00df/g, "s") // sharp s/Eszett -> s
19+
.replace(/\u00e6/g, "ae") // æ -> ae
20+
.replace(/\u00f8/g, "oe") // ø -> oe
21+
.replace(/\u00e5/g, "aa") // å -> aa
22+
.replace(/[.:]+$/g, "") // remove trailing "." and ":"
23+
.replace(/[.]/g, "_") // "." between words to underscore
24+
.replace(/\s+/g, "_") // remaining whitespaces to underscore
25+
.replace(/[^a-zA-Z0-9_]/g, '') // remove non-alphanumeric chars
26+
.trim();
2027
if (!isNaN(+name.charAt(0))) {
2128
name = `col` + name;
2229
}

0 commit comments

Comments
 (0)