on d72cd54 help sign in
bridge/src/form/formatters.js
59 lines 1.1 kB history raw
1import { compose, strSplice } from 'lib/lib';
3const TICKET_MAX_BYTE_LEN = 32; // tickets can be as large as 32 bytes
5export const buildFormatter = (formatters = []) =>
6 compose(...formatters.reverse());
8/**
9 * inserts a ~ or - every 7 characters
10 */
11export const ensurePatFormat = s => {
12 if (!s || s.length === 0) {
13 return s || '';
14 }
16 // ensure there's a dash every 6 + 1 characters
17 const dashAt = i => i * (6 + 1);
18 const maxBlocks = TICKET_MAX_BYTE_LEN / 2;
20 for (let i = 0; i !== maxBlocks; i++) {
21 const dashIndex = dashAt(i);
23 if (s.length - 1 < dashIndex) {
24 return s;
25 }
27 const sep = i === 0 ? '~' : '-';
29 if (s.charAt(dashIndex) !== sep) {
30 s = strSplice(s, dashIndex, sep);
31 }
32 }
34 return s;
35};
37export const convertToNumber = s => {
38 try {
39 return parseInt(s, 10);
40 } catch {
41 return 0;
42 }
43};
45export const downcase = s => {
46 if (!s) {
47 return s;
48 }
50 return s.toLowerCase();
51};
53// const hideAllButLast = s => {
54// const ll = s[s.length -1];
55// const bs = fill(s.length - 1, '•')
56// return `${bs}${ll}`
57// };
58//
59// const hideAll = s => fill(s.length, '•');