Skip to content

Commit ea6986c

Browse files
authored
feat: adding an option to configure a default value to empty values (#766)
1 parent 41a3f03 commit ea6986c

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

projects/common/src/utilities/formatters/string/display-string.pipe.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { displayString } from './string-formatter';
55
name: 'htDisplayString'
66
})
77
export class DisplayStringPipe implements PipeTransform {
8-
public transform(value: unknown): string {
9-
return displayString(value);
8+
public transform(value: unknown, defaultValueOnEmpty: string = '-'): string {
9+
return displayString(value, defaultValueOnEmpty);
1010
}
1111
}

projects/common/src/utilities/formatters/string/string-formatter.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,21 @@ describe('String formatter', () => {
1616
expect(displayString(false)).toBe('false');
1717
});
1818

19+
test('can convert to display string with default empty value', () => {
20+
// tslint:disable-next-line: no-null-keyword
21+
expect(displayString(null, 'none')).toBe('none');
22+
expect(displayString('null', 'none')).toBe('none');
23+
expect(displayString(undefined, 'none')).toBe('none');
24+
expect(displayString('', 'none')).toBe('');
25+
expect(displayString('value', 'none')).toBe('value');
26+
expect(displayString(15, 'none')).toBe('15');
27+
expect(displayString({}, 'none')).toBe('Object');
28+
expect(displayString([undefined], 'none')).toBe('[none]');
29+
expect(displayString(() => 'hi', 'none')).toBe('Function');
30+
expect(displayString(Symbol('test symbol'), 'none')).toBe('Symbol(test symbol)');
31+
expect(displayString(false, 'none')).toBe('false');
32+
});
33+
1934
test('creates string array correctly from comma separated list', () => {
2035
expect(getStringsFromCommaSeparatedList('first,second, third ')).toEqual(
2136
expect.arrayContaining(['first', 'second', 'third'])

projects/common/src/utilities/formatters/string/string-formatter.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
export const displayString = (provided?: unknown): string => {
1+
export const displayString = (provided?: unknown, defaultValueOnEmpty: string = '-'): string => {
22
if (provided === null || provided === 'null') {
3-
return '-';
3+
return defaultValueOnEmpty;
44
}
55

66
switch (typeof provided) {
77
case 'object':
8-
return Array.isArray(provided) ? `[${provided.map(displayString).join(', ')}]` : 'Object';
8+
return Array.isArray(provided)
9+
? `[${provided.map(value => displayString(value, defaultValueOnEmpty)).join(', ')}]`
10+
: 'Object';
911
case 'undefined':
10-
return '-';
12+
return defaultValueOnEmpty;
1113
case 'function':
1214
return 'Function';
1315
case 'string':

0 commit comments

Comments
 (0)