forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			858 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			858 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
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
 | 
						|
    }
 | 
						|
}
 |