package checker

import (
	"regexp"
	"strings"
)

type Type byte

const (
	Undefined Type = iota
	Email
	Phone
)

func (s Type) String() string {
	switch s {
	case Email:
		return "email"
	case Phone:
		return "phone"
	default:
		return "undefined"
	}
}

var (
	checkers = map[Type]*regexp.Regexp{
		Email: regexp.MustCompile("^.*?@.*?\\.[\\w]+$"),
		Phone: regexp.MustCompile("^\\+\\d{11}$"),
	}
)

func Check(source string) Type {
	source = strings.TrimSpace(source)
	for i, v := range checkers {
		if v.MatchString(source) {
			return i
		}
	}
	return Undefined
}

func CheckEmail(email string) bool {
	return checkers[Email].MatchString(email)
}

func CheckPhone(phone string) bool {
	return checkers[Phone].MatchString(phone)
}