mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 13:31:56 +00:00
merge: ragil-before-sso from development-before-sso
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
package utils
|
||||
|
||||
import "strings"
|
||||
import (
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// NormalizeTrim returns the input string without leading/trailing whitespace.
|
||||
func NormalizeTrim(value string) string {
|
||||
@@ -11,3 +14,36 @@ func NormalizeTrim(value string) string {
|
||||
func NormalizeUpper(value string) string {
|
||||
return strings.ToUpper(NormalizeTrim(value))
|
||||
}
|
||||
|
||||
// NormalizeFlag trims whitespace, removes surrounding brackets/quotes and returns upper-case flag
|
||||
func NormalizeFlag(value string) string {
|
||||
v := NormalizeTrim(value)
|
||||
v = strings.Trim(v, "[]\"'")
|
||||
return strings.ToUpper(v)
|
||||
}
|
||||
|
||||
// ParseFlags parses a raw flags string like "[DOC, PAKAN]" or "DOC,PAKAN"
|
||||
// and returns a deduplicated, sorted slice of normalized flags (upper-case, trimmed).
|
||||
func ParseFlags(raw string) []string {
|
||||
if raw == "" {
|
||||
return nil
|
||||
}
|
||||
parts := strings.Split(raw, ",")
|
||||
set := make(map[string]struct{}, len(parts))
|
||||
for _, p := range parts {
|
||||
f := NormalizeFlag(p)
|
||||
if f == "" {
|
||||
continue
|
||||
}
|
||||
set[f] = struct{}{}
|
||||
}
|
||||
if len(set) == 0 {
|
||||
return nil
|
||||
}
|
||||
res := make([]string, 0, len(set))
|
||||
for k := range set {
|
||||
res = append(res, k)
|
||||
}
|
||||
sort.Strings(res)
|
||||
return res
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user