andrey
12 months ago
3 changed files with 0 additions and 142 deletions
@ -1,32 +0,0 @@ |
|||||
package key |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"strings" |
|
||||
|
|
||||
"gitoa.ru/go-4devs/config" |
|
||||
) |
|
||||
|
|
||||
func LastIndex(sep string, factory config.KeyFactory) func(ctx context.Context, key config.Key) (string, string) { |
|
||||
return func(ctx context.Context, key config.Key) (string, string) { |
|
||||
name := factory(ctx, key) |
|
||||
|
|
||||
idx := strings.LastIndex(name, sep) |
|
||||
if idx == -1 { |
|
||||
return name, "" |
|
||||
} |
|
||||
|
|
||||
return name[0:idx], name[idx+len(sep):] |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func LastIndexField(sep, def string, factory config.KeyFactory) func(ctx context.Context, key config.Key) (string, string) { |
|
||||
return func(ctx context.Context, key config.Key) (string, string) { |
|
||||
p, k := LastIndex(sep, factory)(ctx, key) |
|
||||
if k == "" { |
|
||||
return p, def |
|
||||
} |
|
||||
|
|
||||
return p, k |
|
||||
} |
|
||||
} |
|
@ -1,64 +0,0 @@ |
|||||
package key_test |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"testing" |
|
||||
|
|
||||
"github.com/stretchr/testify/assert" |
|
||||
"gitoa.ru/go-4devs/config" |
|
||||
"gitoa.ru/go-4devs/config/key" |
|
||||
) |
|
||||
|
|
||||
func TestLastIndex(t *testing.T) { |
|
||||
t.Parallel() |
|
||||
|
|
||||
ctx := context.Background() |
|
||||
|
|
||||
cases := map[string]struct { |
|
||||
sep string |
|
||||
path string |
|
||||
field string |
|
||||
}{ |
|
||||
"/secret/with/field/name": { |
|
||||
sep: "/", |
|
||||
path: "/secret/with/field", |
|
||||
field: "name", |
|
||||
}, |
|
||||
"/secret/database:username": { |
|
||||
sep: ":", |
|
||||
path: "/secret/database", |
|
||||
field: "username", |
|
||||
}, |
|
||||
"database:username": { |
|
||||
sep: ":", |
|
||||
path: "database", |
|
||||
field: "username", |
|
||||
}, |
|
||||
"/secret/database-dsn": { |
|
||||
sep: ":", |
|
||||
path: "/secret/database-dsn", |
|
||||
field: "", |
|
||||
}, |
|
||||
"/secret/database--dsn": { |
|
||||
sep: "--", |
|
||||
path: "/secret/database", |
|
||||
field: "dsn", |
|
||||
}, |
|
||||
"/secret/database:dsn": { |
|
||||
sep: "--", |
|
||||
path: "/secret/database:dsn", |
|
||||
field: "", |
|
||||
}, |
|
||||
} |
|
||||
|
|
||||
for path, data := range cases { |
|
||||
k := config.Key{ |
|
||||
Name: path, |
|
||||
} |
|
||||
|
|
||||
fn := key.LastIndex(data.sep, key.Name) |
|
||||
ns, field := fn(ctx, k) |
|
||||
assert.Equal(t, data.field, field, k) |
|
||||
assert.Equal(t, data.path, ns, k) |
|
||||
} |
|
||||
} |
|
@ -1,46 +0,0 @@ |
|||||
package key |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"strings" |
|
||||
|
|
||||
"gitoa.ru/go-4devs/config" |
|
||||
) |
|
||||
|
|
||||
func NsAppName(sep string) config.KeyFactory { |
|
||||
return func(_ context.Context, key config.Key) string { |
|
||||
return strings.Join([]string{key.Namespace, key.AppName, key.Name}, sep) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func AppName(sep string) config.KeyFactory { |
|
||||
return func(_ context.Context, key config.Key) string { |
|
||||
return strings.Join([]string{key.AppName, key.Name}, sep) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func PrefixName(prefix string, factory config.KeyFactory) config.KeyFactory { |
|
||||
return func(ctx context.Context, key config.Key) string { |
|
||||
return prefix + factory(ctx, key) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func Name(_ context.Context, key config.Key) string { |
|
||||
return key.Name |
|
||||
} |
|
||||
|
|
||||
func AliasName(name string, alias string, def config.KeyFactory) config.KeyFactory { |
|
||||
return func(ctx context.Context, key config.Key) string { |
|
||||
if name == key.Name { |
|
||||
return alias |
|
||||
} |
|
||||
|
|
||||
return def(ctx, key) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func ReplaceAll(oldVal, newVal string, parent config.KeyFactory) config.KeyFactory { |
|
||||
return func(ctx context.Context, key config.Key) string { |
|
||||
return strings.ReplaceAll(parent(ctx, key), oldVal, newVal) |
|
||||
} |
|
||||
} |
|
Loading…
Reference in new issue