Create & Init Project...
This commit is contained in:
40
app/tool/protoc-gen-bm/util/BUILD
Normal file
40
app/tool/protoc-gen-bm/util/BUILD
Normal file
@ -0,0 +1,40 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(
|
||||
"@io_bazel_rules_go//go:def.bzl",
|
||||
"go_test",
|
||||
"go_library",
|
||||
)
|
||||
|
||||
go_test(
|
||||
name = "go_default_test",
|
||||
srcs = ["style_test.go"],
|
||||
embed = [":go_default_library"],
|
||||
rundir = ".",
|
||||
tags = ["automanaged"],
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"param.go",
|
||||
"style.go",
|
||||
],
|
||||
importpath = "go-common/app/tool/protoc-gen-bm/util",
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "package-srcs",
|
||||
srcs = glob(["**"]),
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [":package-srcs"],
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
27
app/tool/protoc-gen-bm/util/param.go
Normal file
27
app/tool/protoc-gen-bm/util/param.go
Normal file
@ -0,0 +1,27 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ParseParamSetFlag parse param from a=b,c=d
|
||||
func ParseParamSetFlag(param string, fset *flag.FlagSet) (err error) {
|
||||
if param == "" {
|
||||
return nil
|
||||
}
|
||||
args := strings.Split(param, ",")
|
||||
for _, arg := range args {
|
||||
spec := strings.SplitN(arg, "=", 2)
|
||||
if len(spec) == 2 {
|
||||
err = fset.Set(spec[0], spec[1])
|
||||
} else {
|
||||
err = fset.Set(spec[0], "")
|
||||
}
|
||||
if err != nil {
|
||||
return fmt.Errorf("set flag error: %s", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
34
app/tool/protoc-gen-bm/util/style.go
Normal file
34
app/tool/protoc-gen-bm/util/style.go
Normal file
@ -0,0 +1,34 @@
|
||||
package util
|
||||
|
||||
// CamelCase convert to Camel-Case
|
||||
func CamelCase(name string) string {
|
||||
if len(name) == 0 {
|
||||
return name
|
||||
}
|
||||
if name[0] == '_' {
|
||||
return name
|
||||
}
|
||||
input := []byte(name)
|
||||
ret := make([]byte, 0, len(input))
|
||||
toUpper := func(c byte) byte {
|
||||
if 'a' <= c && c <= 'z' {
|
||||
c -= 32
|
||||
}
|
||||
return c
|
||||
}
|
||||
ret = append(ret, toUpper(input[0]))
|
||||
underline := false
|
||||
for _, c := range input[1:] {
|
||||
switch {
|
||||
case c == '_':
|
||||
underline = true
|
||||
default:
|
||||
if underline {
|
||||
c = toUpper(c)
|
||||
}
|
||||
ret = append(ret, c)
|
||||
underline = false
|
||||
}
|
||||
}
|
||||
return string(ret)
|
||||
}
|
32
app/tool/protoc-gen-bm/util/style_test.go
Normal file
32
app/tool/protoc-gen-bm/util/style_test.go
Normal file
@ -0,0 +1,32 @@
|
||||
package util
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestCamelCase(t *testing.T) {
|
||||
type args struct {
|
||||
name string
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "test1",
|
||||
args: args{name: "_test"},
|
||||
want: "_test",
|
||||
},
|
||||
{
|
||||
name: "test2",
|
||||
args: args{name: "hello_world"},
|
||||
want: "HelloWorld",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := CamelCase(tt.args.name); got != tt.want {
|
||||
t.Errorf("CamelCase() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user