This commit is contained in:
兔子
2023-05-12 16:34:28 +08:00
parent 677ce0f0c3
commit 21774b777f
3 changed files with 92 additions and 66 deletions

View File

@@ -3,70 +3,72 @@ package utils
import "net/url"
func init() {
Is.Ip = IsIp
Is.Url = IsUrl
Is.Email = IsEmail
Is.Phone = IsPhone
Is.Mobile = IsMobile
Is.Empty = IsEmpty
Is.True = IsTrue
Is.False = IsFalse
Is.Number = IsNumber
Is.Float = IsFloat
Is.Bool = IsBool
Is.Accepted = IsAccepted
Is.Date = IsDate
Is.Alpha = IsAlpha
Is.AlphaNum = IsAlphaNum
Is.AlphaDash = IsAlphaDash
Is.Chs = IsChs
Is.ChsAlpha = IsChsAlpha
Is.ChsAlphaNum = IsChsAlphaNum
Is.ChsDash = IsChsDash
Is.Cntrl = IsCntrl
Is.Graph = IsGraph
Is.Lower = IsLower
Is.Upper = IsUpper
Is.Space = IsSpace
Is.Xdigit = IsXdigit
Is.ActiveUrl = IsActiveUrl
Is.Domain = IsDomain
Is.IdCard = IsIdCard
Is.MacAddr = IsMacAddr
Is.Zip = IsZip
Is.String = IsString
Is.Slice = IsSlice
Is.Array = IsArray
Is.JsonString = IsJsonString
Is.Map = IsMap
Is.SliceSlice = IsSliceSlice
Is.MapAny = IsMapAny
Get.Type = GetType
Get.Ip = GetIp
In.Array = InArray[any]
Array.Filter = ArrayFilter
Array.Remove = ArrayRemove
Password.Create = PasswordCreate
Password.Verify = PasswordVerify
Rand.Int = RandInt
Rand.String = RandString
Struct.Set = StructSet
Struct.Get = StructGet
Struct.Del = StructDel
Struct.Has = StructHas
Struct.Keys = StructKeys
Struct.Values = StructValues
Struct.Len = StructLen
Struct.Map = StructMap
Struct.Slice = StructSlice
Json.Encode = JsonEncode
Json.Decode = JsonDecode
Json.Get = JsonGet
Format.Query = FormatQuery
Parse.ParamsBefore = ParseParamsBefore
Parse.Params = ParseParams
Net.Tcping = NetTcping
Mime.Type = MimeType
Is.Ip = IsIp
Is.Url = IsUrl
Is.Email = IsEmail
Is.Phone = IsPhone
Is.Mobile = IsMobile
Is.Empty = IsEmpty
Is.True = IsTrue
Is.False = IsFalse
Is.Number = IsNumber
Is.Float = IsFloat
Is.Bool = IsBool
Is.Accepted = IsAccepted
Is.Date = IsDate
Is.Alpha = IsAlpha
Is.AlphaNum = IsAlphaNum
Is.AlphaDash = IsAlphaDash
Is.Chs = IsChs
Is.ChsAlpha = IsChsAlpha
Is.ChsAlphaNum = IsChsAlphaNum
Is.ChsDash = IsChsDash
Is.Cntrl = IsCntrl
Is.Graph = IsGraph
Is.Lower = IsLower
Is.Upper = IsUpper
Is.Space = IsSpace
Is.Xdigit = IsXdigit
Is.ActiveUrl = IsActiveUrl
Is.Domain = IsDomain
Is.IdCard = IsIdCard
Is.MacAddr = IsMacAddr
Is.Zip = IsZip
Is.String = IsString
Is.Slice = IsSlice
Is.Array = IsArray
Is.JsonString = IsJsonString
Is.Map = IsMap
Is.SliceSlice = IsSliceSlice
Is.MapAny = IsMapAny
Get.Type = GetType
Get.Ip = GetIp
In.Array = InArray[any]
Array.Filter = ArrayFilter
Array.Remove = ArrayRemove
Array.Unique = ArrayUnique[any]
Array.Empty = ArrayEmpty[any]
Password.Create = PasswordCreate
Password.Verify = PasswordVerify
Rand.Int = RandInt
Rand.String = RandString
Struct.Set = StructSet
Struct.Get = StructGet
Struct.Del = StructDel
Struct.Has = StructHas
Struct.Keys = StructKeys
Struct.Values = StructValues
Struct.Len = StructLen
Struct.Map = StructMap
Struct.Slice = StructSlice
Json.Encode = JsonEncode
Json.Decode = JsonDecode
Json.Get = JsonGet
Format.Query = FormatQuery
Parse.ParamsBefore = ParseParamsBefore
Parse.Params = ParseParams
Net.Tcping = NetTcping
Mime.Type = MimeType
}
var Is struct {
@@ -123,6 +125,8 @@ var In struct {
var Array struct {
Filter func(array []string) (slice []string)
Remove func(array []string, args ...string) (slice []string)
Unique func(array []any) (slice []any)
Empty func(array []any) (slice []any)
}
var Password struct {
@@ -168,4 +172,4 @@ var Net struct {
var Mime struct {
Type func(suffix any) (mime string)
}
}

View File

@@ -29,3 +29,25 @@ func ArrayRemove(array []string, args ...string) []string {
}
return array
}
// ArrayUnique - 数组去重
func ArrayUnique[T any](array []T) (slice []any) {
list := make(map[any]bool)
for _, item := range array {
if !list[item] {
list[item] = true
slice = append(slice, item)
}
}
return slice
}
// ArrayEmpty - 数组去空
func ArrayEmpty[T any](array []T) (slice []any) {
for _, item := range array {
if !IsEmpty(item) {
slice = append(slice, item)
}
}
return slice
}

View File

@@ -153,7 +153,7 @@ func ParseParams(params map[string]any) (result map[string]any) {
params[keys[0]] = make(map[string]any, 3)
}
wg.Add(1)
go worker(params[keys[0]].(map[string]any), strings.Join(keys[1:], "."), val)
go worker(cast.ToStringMap(params[keys[0]]), strings.Join(keys[1:], "."), val)
}
return