revert SearchArray/InArray functions for gstr

This commit is contained in:
John
2019-04-11 09:26:52 +08:00
parent 4ac647a215
commit 0ffe17ee3d
3 changed files with 57 additions and 6 deletions

View File

@ -7,12 +7,27 @@
package cmdenv
import (
"github.com/gogf/gf/g/container/gvar"
"github.com/gogf/gf/g/os/gcmd"
"github.com/gogf/gf/g/os/genv"
"strings"
"github.com/gogf/gf/g/container/gvar"
"os"
"regexp"
"strings"
)
var (
// Console options.
cmdOptions = make(map[string]string)
)
func init() {
reg := regexp.MustCompile(`\-\-{0,1}(.+?)=(.+)`)
for i := 0; i < len(os.Args); i++ {
result := reg.FindStringSubmatch(os.Args[i])
if len(result) > 1 {
cmdOptions[result[1]] = result[2]
}
}
}
// 获取指定名称的命令行参数,当不存在时获取环境变量参数,皆不存在时,返回给定的默认值。
// 规则:
// 1、命令行参数以小写字母格式使用: gf.包名.变量名 传递;
@ -22,11 +37,11 @@ func Get(key string, def...interface{}) gvar.VarRead {
if len(def) > 0 {
value = def[0]
}
if v := gcmd.Option.Get(key); v != "" {
if v, ok := cmdOptions[key]; ok {
value = v
} else {
key = strings.ToUpper(strings.Replace(key, ".", "_", -1))
if v := genv.Get(key); v != "" {
if v := os.Getenv(key); v != "" {
value = v
}
}

View File

@ -594,4 +594,21 @@ func QuoteMeta(str string) string {
buf.WriteRune(char)
}
return buf.String()
}
// SearchArray searches string <s> in string slice <a> case-sensitively,
// returns its index in <a>.
// If <s> is not found in <a>, it returns -1.
func SearchArray (a []string, s string) int {
for i, v := range a {
if s == v {
return i
}
}
return -1
}
// InArray checks whether string <s> in slice <a>.
func InArray (a []string, s string) bool {
return SearchArray(a, s) != -1
}

View File

@ -383,3 +383,22 @@ func Test_ContainsAny(t *testing.T) {
})
}
func Test_SearchArray(t *testing.T) {
gtest.Case(t, func() {
a := g.SliceStr{"a", "b", "c"}
gtest.AssertEQ(gstr.SearchArray(a, "a"), 0)
gtest.AssertEQ(gstr.SearchArray(a, "b"), 1)
gtest.AssertEQ(gstr.SearchArray(a, "c"), 2)
gtest.AssertEQ(gstr.SearchArray(a, "d"), -1)
})
}
func Test_InArray(t *testing.T) {
gtest.Case(t, func() {
a := g.SliceStr{"a", "b", "c"}
gtest.AssertEQ(gstr.InArray(a, "a"), true)
gtest.AssertEQ(gstr.InArray(a, "b"), true)
gtest.AssertEQ(gstr.InArray(a, "c"), true)
gtest.AssertEQ(gstr.InArray(a, "d"), false)
})
}