mirror of
https://github.com/tobycroft/gorose-pro.git
synced 2025-09-26 12:41:16 +08:00
104 lines
1.6 KiB
Go
104 lines
1.6 KiB
Go
package gorose
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
// Error ...
|
|
type Error uint
|
|
|
|
// Lang ...
|
|
type Lang uint
|
|
|
|
const (
|
|
// CHINESE ...
|
|
CHINESE Lang = iota
|
|
// ENGLISH ...
|
|
ENGLISH
|
|
// CHINESE_TRADITIONAL ...
|
|
CHINESE_TRADITIONAL
|
|
)
|
|
|
|
const (
|
|
// ERR_PARAMS_COUNTS ...
|
|
ERR_PARAMS_COUNTS Error = iota
|
|
// ERR_PARAMS_MISSING ...
|
|
ERR_PARAMS_MISSING
|
|
// ERR_PARAMS_FORMAT ...
|
|
ERR_PARAMS_FORMAT
|
|
)
|
|
|
|
// Default ...
|
|
func (e *Err) Default() map[Error]string {
|
|
return map[Error]string{
|
|
ERR_PARAMS_COUNTS: "参数数量有误",
|
|
ERR_PARAMS_MISSING: "参数缺失",
|
|
ERR_PARAMS_FORMAT: "参数格式错误",
|
|
}
|
|
}
|
|
|
|
var langString = map[Lang]string{
|
|
CHINESE: "chinese",
|
|
ENGLISH: "english",
|
|
CHINESE_TRADITIONAL: "chinese_traditional",
|
|
}
|
|
|
|
// String ...
|
|
func (l Lang) String() string {
|
|
return langString[l]
|
|
}
|
|
|
|
// Err ...
|
|
type Err struct {
|
|
lang Lang
|
|
err map[Lang]map[Error]string
|
|
}
|
|
|
|
//var gOnce *sync.Once
|
|
var gErr *Err
|
|
|
|
func init() {
|
|
var tmpLang = make(map[Lang]map[Error]string)
|
|
gErr = &Err{err: tmpLang}
|
|
gErr.lang = CHINESE
|
|
gErr.Register(gErr.Default())
|
|
}
|
|
|
|
// NewErr ...
|
|
func NewErr() *Err {
|
|
return gErr
|
|
}
|
|
|
|
// SetLang ...
|
|
func (e *Err) SetLang(l Lang) {
|
|
e.lang = l
|
|
}
|
|
|
|
// GetLang ...
|
|
func (e *Err) GetLang() Lang {
|
|
return e.lang
|
|
}
|
|
|
|
// Register ...
|
|
func (e *Err) Register(err map[Error]string) {
|
|
e.err[e.GetLang()] = err
|
|
}
|
|
|
|
// Get ...
|
|
func (e *Err) Get(err Error) string {
|
|
return e.err[e.GetLang()][err]
|
|
}
|
|
|
|
// GetErr ...
|
|
func GetErr(err Error, args ...interface{}) error {
|
|
var argreal string
|
|
if len(args) > 0 {
|
|
argreal = fmt.Sprint(":", args)
|
|
}
|
|
return errors.New(fmt.Sprint(
|
|
NewErr().
|
|
Get(err),
|
|
argreal))
|
|
}
|