44 lines
775 B
Go
44 lines
775 B
Go
package platform
|
|
|
|
import "strings"
|
|
|
|
func parseLSBLKPairs(line string) map[string]string {
|
|
out := map[string]string{}
|
|
for _, part := range splitQuotedFields(line) {
|
|
idx := strings.Index(part, "=")
|
|
if idx <= 0 {
|
|
continue
|
|
}
|
|
key := part[:idx]
|
|
value := strings.Trim(part[idx+1:], `"`)
|
|
out[key] = value
|
|
}
|
|
return out
|
|
}
|
|
|
|
func splitQuotedFields(s string) []string {
|
|
var out []string
|
|
var cur strings.Builder
|
|
inQuotes := false
|
|
for _, r := range s {
|
|
switch r {
|
|
case '"':
|
|
inQuotes = !inQuotes
|
|
cur.WriteRune(r)
|
|
case ' ':
|
|
if inQuotes {
|
|
cur.WriteRune(r)
|
|
} else if cur.Len() > 0 {
|
|
out = append(out, cur.String())
|
|
cur.Reset()
|
|
}
|
|
default:
|
|
cur.WriteRune(r)
|
|
}
|
|
}
|
|
if cur.Len() > 0 {
|
|
out = append(out, cur.String())
|
|
}
|
|
return out
|
|
}
|