mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-06 05:01:10 -05:00
Bumps [github.com/gookit/config/v2](https://github.com/gookit/config) from 2.2.3 to 2.2.4. - [Release notes](https://github.com/gookit/config/releases) - [Commits](https://github.com/gookit/config/compare/v2.2.3...v2.2.4) --- updated-dependencies: - dependency-name: github.com/gookit/config/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
package structs
|
|
|
|
import "fmt"
|
|
|
|
// Aliases implemented a simple string alias map.
|
|
type Aliases struct {
|
|
mapping map[string]string
|
|
// Checker custom add alias name checker func
|
|
Checker func(alias string) // should return bool OR error ??
|
|
}
|
|
|
|
// NewAliases create
|
|
func NewAliases(checker func(alias string)) *Aliases {
|
|
return &Aliases{Checker: checker}
|
|
}
|
|
|
|
// AddAlias to the Aliases
|
|
func (as *Aliases) AddAlias(real, alias string) {
|
|
if as.mapping == nil {
|
|
as.mapping = make(map[string]string)
|
|
}
|
|
|
|
if as.Checker != nil {
|
|
as.Checker(alias)
|
|
}
|
|
|
|
if rn, ok := as.mapping[alias]; ok {
|
|
panic(fmt.Sprintf("The alias '%s' is already used by '%s'", alias, rn))
|
|
}
|
|
as.mapping[alias] = real
|
|
}
|
|
|
|
// AddAliases to the Aliases
|
|
func (as *Aliases) AddAliases(real string, aliases []string) {
|
|
for _, a := range aliases {
|
|
as.AddAlias(real, a)
|
|
}
|
|
}
|
|
|
|
// AddAliasMap to the Aliases
|
|
func (as *Aliases) AddAliasMap(alias2real map[string]string) {
|
|
for a, r := range alias2real {
|
|
as.AddAlias(r, a)
|
|
}
|
|
}
|
|
|
|
// HasAlias in the Aliases
|
|
func (as *Aliases) HasAlias(alias string) bool {
|
|
if _, ok := as.mapping[alias]; ok {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// ResolveAlias by given name. if not exists, return the alias self
|
|
func (as *Aliases) ResolveAlias(alias string) string {
|
|
if name, ok := as.mapping[alias]; ok {
|
|
return name
|
|
}
|
|
return alias
|
|
}
|
|
|
|
// Mapping get all aliases mapping
|
|
func (as *Aliases) Mapping() map[string]string {
|
|
return as.mapping
|
|
}
|