package ask

import (
	"fmt"
	"strconv"
)

func Int(query string, min, max int) int {
	return raw(query, '\n', func(s string) (v int, msg string) {
		v, err := strconv.Atoi(s)
		if err != nil {
			msg = "please enter a number"
			return v, msg
		}
		if min >= 0 && v < min {
			msg = fmt.Sprintf("your number must be bigger than %d", min)
			return v, msg
		}
		if max >= 0 && v > max {
			msg = fmt.Sprintf("your number must be smaller than %d", max)
			return v, msg
		}
		return v, msg
	})
}

func Float64(query string, min, max float64) float64 {
	return raw(query, '\n', func(s string) (v float64, msg string) {
		v, err := strconv.ParseFloat(s, 64)
		if err != nil {
			msg = "please enter a number"
			return v, msg
		}
		if min >= 0 && v < min {
			msg = fmt.Sprintf("your number must be bigger than %g", min)
			return v, msg
		}
		if max >= 0 && v > max {
			msg = fmt.Sprintf("your number must be smaller than %g", max)
			return v, msg
		}
		return v, msg
	})
}
