29 lines
857 B
TypeScript
29 lines
857 B
TypeScript
import { Translation } from "../../i18n/Translation"
|
|
import Translations from "../../i18n/Translations"
|
|
import { Validator } from "../Validator"
|
|
|
|
export default class IntValidator extends Validator {
|
|
constructor(name?: string, explanation?: string) {
|
|
super(
|
|
name ?? "int",
|
|
explanation ?? "A whole number, either positive, negative or zero",
|
|
"numeric"
|
|
)
|
|
}
|
|
|
|
isValid(str): boolean {
|
|
str = "" + str
|
|
return str !== undefined && str.indexOf(".") < 0 && !isNaN(Number(str))
|
|
}
|
|
|
|
getFeedback(s: string): Translation {
|
|
const n = Number(s)
|
|
if (isNaN(n)) {
|
|
return Translations.t.validation.nat.notANumber
|
|
}
|
|
if (Math.floor(n) !== n) {
|
|
return Translations.t.validation.nat.mustBeWhole
|
|
}
|
|
return undefined
|
|
}
|
|
}
|