phonumber
Version:
Phone number parser. Good for formatting phone numbers entered by users.
42 lines (29 loc) • 834 B
text/typescript
import { regexp } from './constants';
import { SetMaskParams } from './types';
const { REGEXP_ALL_HASHES, REGEXP_MASK_SYMBOLS, REGEXP_CLEANED_MASK } = regexp;
const setMask = ({ mask, value, options }: SetMaskParams) => {
let i = 0;
let tail = '';
if (!value) {
return '';
}
if (!mask) {
return value;
}
const cleanedMask = mask.replace(REGEXP_CLEANED_MASK, '');
if (options?.withTail) {
const hashesLength = cleanedMask.replace(REGEXP_MASK_SYMBOLS, '').length;
tail = value.slice(hashesLength, value.length);
}
const maskedData = cleanedMask.replace(REGEXP_ALL_HASHES, () => {
const char = value[i];
i += 1;
if (char) {
return char;
}
return '_';
});
const result = maskedData.split('_')[0].trim();
return `${result}${tail}`;
};
export default setMask;