2
0
mirror of https://github.com/tenrok/maska.git synced 2026-06-05 16:42:28 +03:00

Parse input opts logic moved from MaskInput

This commit is contained in:
Alexander Shabunevich
2022-12-09 13:29:41 +03:00
parent 547f1711e8
commit 32bbbcf3da
3 changed files with 31 additions and 90 deletions
+29 -4
View File
@@ -1,15 +1,40 @@
import { MaskType } from './mask'
import { MaskOptions, MaskType } from './mask'
import { MaskTokens } from './tokens'
const parseJson = (value: string): any => JSON.parse(value.replaceAll("'", '"'))
export const parseOpts = (value: string): boolean =>
export const parseInput = (
input: HTMLInputElement,
defaults: MaskOptions = {}
): MaskOptions => {
const opts = { ...defaults }
if (input.dataset.maska != null && input.dataset.maska !== '') {
opts.mask = parseMask(input.dataset.maska)
}
if (input.dataset.maskaEager != null) {
opts.eager = parseOpts(input.dataset.maskaEager)
}
if (input.dataset.maskaReversed != null) {
opts.reversed = parseOpts(input.dataset.maskaReversed)
}
if (input.dataset.maskaTokensReplace != null) {
opts.tokensReplace = parseOpts(input.dataset.maskaTokensReplace)
}
if (input.dataset.maskaTokens != null) {
opts.tokens = parseTokens(input.dataset.maskaTokens)
}
return opts
}
const parseOpts = (value: string): boolean =>
value !== '' ? Boolean(JSON.parse(value)) : true
export const parseMask = (value: string): MaskType =>
const parseMask = (value: string): MaskType =>
value.startsWith('[') && value.endsWith(']') ? parseJson(value) : value
export const parseTokens = (value: string): MaskTokens => {
const parseTokens = (value: string): MaskTokens => {
if (value.startsWith('{') && value.endsWith('}')) {
return parseJson(value)
}