UNPKG

wsemi

Version:

A support package for web developer.

144 lines (138 loc) 3.8 kB
import isstr from './isstr.mjs' import isnum from './isnum.mjs' import isp0num from './isp0num.mjs' import isn0num from './isn0num.mjs' import isint from './isint.mjs' import ispint from './ispint.mjs' import isp0int from './isp0int.mjs' import isnint from './isnint.mjs' import isn0int from './isn0int.mjs' import isfun from './isfun.mjs' /** * 驗證數值是否為指定類型 * * Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/verifyValue.test.mjs Github} * @memberOf wsemi * @param {String|Function} type 輸入判斷資料類型字串或判斷函式,資料類型可選為'isstr','isnum','isp0num','isn0num','isint','ispint','isp0int','isnint','isn0int','isfun' * @param {*} value 輸入任意資料 * @returns {Object} 回傳判斷結果,屬性value為回傳資料類型的取值,屬性err為是否資料類型有錯,屬性errmsg為類型有錯時之錯誤訊息 * @example * * console.log(verifyValue('12a5', 'isstr')) * // => r.err=false * * console.log(verifyValue('12', 'isint')) * // => r.err=false * * console.log(verifyValue('0', 'isp0int')) * // => r.err=false * * console.log(verifyValue('12', 'isp0int')) * // => r.err=false * * console.log(verifyValue('0', 'isn0int')) * // => r.err=false * * console.log(verifyValue('-12', 'isn0int')) * // => r.err=false * * console.log(verifyValue('12.34', 'isnum')) * // => r.err=false * * console.log(verifyValue('12.34', 'isp0num')) * // => r.err=false * * console.log(verifyValue('-12.34', 'isn0num')) * // => r.err=false * */ function verifyValue(value, type) { let err = false let errmsg = '' if (type === 'isstr') { if (!isstr(value)) { err = true errmsg = '需要為字串' value = '' } } else if (type === 'isnum') { if (!isnum(value)) { err = true errmsg = '需要為數字' value = 0 } } else if (type === 'isp0num') { if (!isp0num(value)) { err = true errmsg = '需要為含0的正浮點數' value = 0 } } else if (type === 'isn0num') { if (!isn0num(value)) { err = true errmsg = '需要為含0的負浮點數' value = 0 } } else if (type === 'isint') { if (!isint(value)) { err = true errmsg = '需要為整數' value = 0 } } else if (type === 'ispint') { if (!ispint(value)) { err = true errmsg = '需要為不含0正整數' value = 0 } } else if (type === 'isp0int') { if (!isp0int(value)) { err = true errmsg = '需要為含0正整數' value = 0 } } else if (type === 'isnint') { if (!isnint(value)) { err = true errmsg = '需要為不含0負整數' value = 0 } } else if (type === 'isn0int') { if (!isn0int(value)) { err = true errmsg = '需要為含0負整數' value = 0 } } else if (isfun(type)) { let f = type value = f(value) } else if (type === 'any') { if (!isnum(value) && !isstr(value)) { err = true errmsg = '需要為字串或數字' value = '' } } else { err = true errmsg = '需要指定驗證類型' value = null } let r = { value: value, err: err, errmsg: errmsg, } return r } export default verifyValue