2
0
mirror of https://github.com/tenrok/maska.git synced 2026-06-20 20:00:34 +03:00

fix!: change eager mask behavior

Now eager mask take into account a hardcoded symbols
This commit is contained in:
Alexander Shabunevich
2024-04-06 10:13:31 +03:00
parent dee8f2eaf2
commit ce1243abcd
2 changed files with 47 additions and 29 deletions
+5
View File
@@ -217,6 +217,11 @@ export class Mask {
) { ) {
if (masked) { if (masked) {
result[method](mask.charAt(m)) result[method](mask.charAt(m))
if (value.charAt(v) === mask.charAt(m)) {
m += offset
v += offset
continue
}
} else if (mask.charAt(m) === value.charAt(v)) { } else if (mask.charAt(m) === value.charAt(v)) {
v += offset v += offset
} }
+42 -29
View File
@@ -175,7 +175,9 @@ test('0#.# mask', () => {
const mask = new Mask({ mask: '0#.#' }) const mask = new Mask({ mask: '0#.#' })
expect(mask.masked('1')).toBe('01') expect(mask.masked('1')).toBe('01')
expect(mask.masked('0')).toBe('0')
expect(mask.masked('01')).toBe('01') expect(mask.masked('01')).toBe('01')
expect(mask.masked('01.')).toBe('01.')
expect(mask.masked('12')).toBe('01.2') expect(mask.masked('12')).toBe('01.2')
expect(mask.masked('1.2')).toBe('01.2') expect(mask.masked('1.2')).toBe('01.2')
expect(mask.masked('01.2')).toBe('01.2') expect(mask.masked('01.2')).toBe('01.2')
@@ -189,10 +191,12 @@ test('0#.# eager mask', () => {
const mask = new Mask({ mask: '0#.#', eager: true }) const mask = new Mask({ mask: '0#.#', eager: true })
expect(mask.masked('1')).toBe('01.') expect(mask.masked('1')).toBe('01.')
expect(mask.masked('01')).toBe('00.1') expect(mask.masked('0')).toBe('0')
expect(mask.masked('01')).toBe('01.')
expect(mask.masked('01.')).toBe('01.')
expect(mask.masked('12')).toBe('01.2') expect(mask.masked('12')).toBe('01.2')
expect(mask.masked('1.2')).toBe('01.2') expect(mask.masked('1.2')).toBe('01.2')
expect(mask.masked('01.2')).toBe('00.1') expect(mask.masked('01.2')).toBe('01.2')
expect(mask.masked('123')).toBe('01.2') expect(mask.masked('123')).toBe('01.2')
expect(mask.masked('a123')).toBe('01.2') expect(mask.masked('a123')).toBe('01.2')
@@ -264,6 +268,7 @@ test('0#!-# mask', () => {
expect(mask.masked('a')).toBe('0') expect(mask.masked('a')).toBe('0')
expect(mask.masked('0')).toBe('0') expect(mask.masked('0')).toBe('0')
expect(mask.masked('01')).toBe('01')
expect(mask.masked('1')).toBe('01') expect(mask.masked('1')).toBe('01')
expect(mask.masked('12')).toBe('01-2') expect(mask.masked('12')).toBe('01-2')
expect(mask.masked('01-2')).toBe('01-2') expect(mask.masked('01-2')).toBe('01-2')
@@ -277,10 +282,11 @@ test('!0#!-# eager mask', () => {
const mask = new Mask({ mask: '!0#!-#', eager: true }) const mask = new Mask({ mask: '!0#!-#', eager: true })
expect(mask.masked('a')).toBe('0') expect(mask.masked('a')).toBe('0')
expect(mask.masked('0')).toBe('00-') expect(mask.masked('0')).toBe('0')
expect(mask.masked('01')).toBe('01-')
expect(mask.masked('1')).toBe('01-') expect(mask.masked('1')).toBe('01-')
expect(mask.masked('12')).toBe('01-2') expect(mask.masked('12')).toBe('01-2')
expect(mask.masked('01-2')).toBe('00-1') expect(mask.masked('01-2')).toBe('01-2')
expect(mask.masked('123')).toBe('01-2') expect(mask.masked('123')).toBe('01-2')
expect(mask.masked('a123')).toBe('01-2') expect(mask.masked('a123')).toBe('01-2')
@@ -309,14 +315,14 @@ test('#2 ## eager mask', () => {
const mask = new Mask({ mask: '#2 ##', eager: true }) const mask = new Mask({ mask: '#2 ##', eager: true })
expect(mask.masked('1')).toBe('12 ') expect(mask.masked('1')).toBe('12 ')
expect(mask.masked('12')).toBe('12 2') expect(mask.masked('12')).toBe('12 ')
expect(mask.masked('12 ')).toBe('12 2') expect(mask.masked('12 ')).toBe('12 ')
expect(mask.masked('13')).toBe('12 3') expect(mask.masked('13')).toBe('12 3')
expect(mask.masked('123')).toBe('12 23') expect(mask.masked('123')).toBe('12 3')
expect(mask.masked('134')).toBe('12 34') expect(mask.masked('134')).toBe('12 34')
expect(mask.masked('1234')).toBe('12 23') expect(mask.masked('1234')).toBe('12 34')
expect(mask.masked('1345')).toBe('12 34') expect(mask.masked('1345')).toBe('12 34')
expect(mask.masked('12345')).toBe('12 23') expect(mask.masked('12345')).toBe('12 34')
expect(mask.masked('a1')).toBe('12 ') expect(mask.masked('a1')).toBe('12 ')
expect(mask.masked('a13')).toBe('12 3') expect(mask.masked('a13')).toBe('12 3')
@@ -348,10 +354,10 @@ test('(#) 3## eager mask', () => {
expect(mask.masked('12')).toBe('(1) 32') expect(mask.masked('12')).toBe('(1) 32')
expect(mask.masked('123')).toBe('(1) 323') expect(mask.masked('123')).toBe('(1) 323')
expect(mask.masked('1234')).toBe('(1) 323') expect(mask.masked('1234')).toBe('(1) 323')
expect(mask.masked('13')).toBe('(1) 33') expect(mask.masked('13')).toBe('(1) 3')
expect(mask.masked('134')).toBe('(1) 334') expect(mask.masked('134')).toBe('(1) 34')
expect(mask.masked('(1) 23')).toBe('(1) 323') expect(mask.masked('(1) 23')).toBe('(1) 323')
expect(mask.masked('(1) 34')).toBe('(1) 334') expect(mask.masked('(1) 34')).toBe('(1) 34')
expect(mask.unmasked('1')).toBe('1') expect(mask.unmasked('1')).toBe('1')
expect(mask.unmasked('1234')).toBe('123') expect(mask.unmasked('1234')).toBe('123')
@@ -387,14 +393,15 @@ test('(1) 2## eager mask', () => {
expect(mask.masked(' ')).toBe('(1) 2') expect(mask.masked(' ')).toBe('(1) 2')
expect(mask.masked('.')).toBe('(1) 2') expect(mask.masked('.')).toBe('(1) 2')
expect(mask.masked('1')).toBe('(1) 21') expect(mask.masked('1')).toBe('(1) 2')
expect(mask.masked('12')).toBe('(1) 212') expect(mask.masked('1 ')).toBe('(1) 2')
expect(mask.masked('123')).toBe('(1) 212') expect(mask.masked('12')).toBe('(1) 2')
expect(mask.masked('13')).toBe('(1) 213') expect(mask.masked('123')).toBe('(1) 23')
expect(mask.masked('(1) 23')).toBe('(1) 212') expect(mask.masked('13')).toBe('(1) 23')
expect(mask.masked('(1) 34')).toBe('(1) 213') expect(mask.masked('(1) 23')).toBe('(1) 23')
expect(mask.masked('2')).toBe('(1) 22') expect(mask.masked('(1) 34')).toBe('(1) 234')
expect(mask.masked('23')).toBe('(1) 223') expect(mask.masked('2')).toBe('(1) 2')
expect(mask.masked('23')).toBe('(1) 23')
expect(mask.masked('3')).toBe('(1) 23') expect(mask.masked('3')).toBe('(1) 23')
expect(mask.unmasked('1')).toBe('') expect(mask.unmasked('1')).toBe('')
@@ -427,13 +434,14 @@ test('12## eager mask', () => {
expect(mask.masked(' ')).toBe('12') expect(mask.masked(' ')).toBe('12')
expect(mask.masked('.')).toBe('12') expect(mask.masked('.')).toBe('12')
expect(mask.masked('1')).toBe('121') expect(mask.masked('1')).toBe('12')
expect(mask.masked('2')).toBe('122') expect(mask.masked('1 ')).toBe('12')
expect(mask.masked('2')).toBe('12')
expect(mask.masked('3')).toBe('123') expect(mask.masked('3')).toBe('123')
expect(mask.masked('12')).toBe('1212') expect(mask.masked('12')).toBe('12')
expect(mask.masked('123')).toBe('1212') expect(mask.masked('123')).toBe('123')
expect(mask.masked('13')).toBe('1213') expect(mask.masked('13')).toBe('123')
expect(mask.masked('134')).toBe('1213') expect(mask.masked('134')).toBe('1234')
expect(mask.unmasked('1')).toBe('') expect(mask.unmasked('1')).toBe('')
expect(mask.unmasked('12')).toBe('') expect(mask.unmasked('12')).toBe('')
@@ -482,12 +490,16 @@ test('+1 (###) ###-##-## mask', () => {
test('+1 (###) ###-##-## eager mask', () => { test('+1 (###) ###-##-## eager mask', () => {
const mask = new Mask({ mask: '+1 (###) ###-##-##', eager: true }) const mask = new Mask({ mask: '+1 (###) ###-##-##', eager: true })
expect(mask.masked('.')).toBe('+1 (')
expect(mask.masked(' ')).toBe('+1 (')
expect(mask.masked('+')).toBe('+1 (')
expect(mask.masked('99')).toBe('+1 (99') expect(mask.masked('99')).toBe('+1 (99')
expect(mask.masked('999')).toBe('+1 (999) ') expect(mask.masked('999')).toBe('+1 (999) ')
expect(mask.masked('99912')).toBe('+1 (999) 12') expect(mask.masked('99912')).toBe('+1 (999) 12')
expect(mask.masked('999123')).toBe('+1 (999) 123-') expect(mask.masked('999123')).toBe('+1 (999) 123-')
expect(mask.masked('19991234567')).toBe('+1 (199) 912-34-56') expect(mask.masked('19')).toBe('+1 (9')
expect(mask.masked('+19991234567')).toBe('+1 (199) 912-34-56') expect(mask.masked('19991234567')).toBe('+1 (999) 123-45-67')
expect(mask.masked('+19991234567')).toBe('+1 (999) 123-45-67')
expect(mask.masked('9991234567')).toBe('+1 (999) 123-45-67') expect(mask.masked('9991234567')).toBe('+1 (999) 123-45-67')
expect(mask.masked('a9991234567')).toBe('+1 (999) 123-45-67') expect(mask.masked('a9991234567')).toBe('+1 (999) 123-45-67')
@@ -497,8 +509,9 @@ test('+1 (###) ###-##-## eager mask', () => {
test('1 (###) ###-##-## eager mask', () => { test('1 (###) ###-##-## eager mask', () => {
const mask = new Mask({ mask: '1 (###) ###-##-##', eager: true }) const mask = new Mask({ mask: '1 (###) ###-##-##', eager: true })
expect(mask.masked('19991234567')).toBe('1 (199) 912-34-56') expect(mask.masked('+')).toBe('1 (')
expect(mask.masked('+19991234567')).toBe('1 (199) 912-34-56') expect(mask.masked('+19991234567')).toBe('1 (199) 912-34-56')
expect(mask.masked('19991234567')).toBe('1 (999) 123-45-67')
expect(mask.masked('9991234567')).toBe('1 (999) 123-45-67') expect(mask.masked('9991234567')).toBe('1 (999) 123-45-67')
expect(mask.masked('a9991234567')).toBe('1 (999) 123-45-67') expect(mask.masked('a9991234567')).toBe('1 (999) 123-45-67')