import IntValidator from "./IntValidator"
import { Translation } from "../../i18n/Translation"
import Translations from "../../i18n/Translations"

export default class NatValidator extends IntValidator {
    constructor(name?: string, explanation?: string) {
        super(name ?? "nat", explanation ?? "A  whole, positive number or zero")
    }

    isValid(str): boolean {
        if (str === undefined) {
            return false
        }
        str = "" + str

        return str.indexOf(".") < 0 && !isNaN(Number(str)) && Number(str) >= 0
    }

    getFeedback(s: string): Translation {
        const spr = super.getFeedback(s)
        if (spr !== undefined) {
            return spr
        }
        const n = Number(s)
        if (n < 0) {
            return Translations.t.validation.nat.mustBePositive
        }
        return undefined
    }
}