12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package schema
- import (
- "reflect"
- "regexp"
- "strings"
- )
- func ParseTagSetting(str string, sep string) map[string]string {
- settings := map[string]string{}
- names := strings.Split(str, sep)
- for i := 0; i < len(names); i++ {
- j := i
- if len(names[j]) > 0 {
- for {
- if names[j][len(names[j])-1] == '\\' {
- i++
- names[j] = names[j][0:len(names[j])-1] + sep + names[i]
- names[i] = ""
- } else {
- break
- }
- }
- }
- values := strings.Split(names[j], ":")
- k := strings.TrimSpace(strings.ToUpper(values[0]))
- if len(values) >= 2 {
- settings[k] = strings.Join(values[1:], ":")
- } else if k != "" {
- settings[k] = k
- }
- }
- return settings
- }
- func checkTruth(val string) bool {
- if strings.ToLower(val) == "false" {
- return false
- }
- return true
- }
- func toColumns(val string) (results []string) {
- if val != "" {
- for _, v := range strings.Split(val, ",") {
- results = append(results, strings.TrimSpace(v))
- }
- }
- return
- }
- func removeSettingFromTag(tag reflect.StructTag, name string) reflect.StructTag {
- return reflect.StructTag(regexp.MustCompile(`(?i)(gorm:.*?)(`+name+`:.*?)(;|("))`).ReplaceAllString(string(tag), "${1}${4}"))
- }
|