/
blank.ts
48 lines (46 loc) · 1.49 KB
/
blank.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
* It's not nice to show `null` or `undefined` to user,
* use blank to hide nullables under user friendly string.
*
* Encourages usage of Nullish Coalescing operator...
* Fyi:
* - to multiply signs use `string.repeat` api
* - to remove leading and trailing whitespaces use `string.trim` api
*
* @example
* export const sameBlank = blank.emDash;
* <p>{`username: ${user.name ?? sameBlank}`}</p>
* <p>{`country: ${user.country ?? sameBlank}`}</p>
*/
export namespace blank {
export const empty = '';
export const dash = '-';
export const emDash = '–';
/** Hash sign or Number sign, also used as hashtags prefix */
export const hash = '#';
export const star = '*';
export const dollar = '$';
/** Known as Rest sign, literally to be Continued... */
export const treeDots = '...';
export const treeStars = '***';
export const treeDollars = '$$$';
export const mask = (word: string, maskSign = star): string => {
// return word.replace(/./g, maskSign);
// Array(word.length+1).join(maskSign)
return maskSign.repeat(word.length);
}
export const truncate = (word: string, limit= 120, overflowSign = treeDots): string => {
return word.length > limit
? word.slice(0, limit - overflowSign.length) + overflowSign
: word;
}
}
/**
* Ready-made blank '-'
* make all your empty fields look consistent.
*
* @example:
* <p>{`username: ${user.name ?? jamBlank}`}</p>
* <p>{`password: ${blank.mask(user.password)}`}</p>
*/
export const jamBlank = blank.dash;