(str string)
| 93 | } |
| 94 | |
| 95 | func customToSnake(str string) string { |
| 96 | str = toCamel(str) |
| 97 | l := len(str) |
| 98 | for k, _ := range peculiarNouns { |
| 99 | if str == k { |
| 100 | str = strings.ToLower(str) |
| 101 | break |
| 102 | } |
| 103 | |
| 104 | nl := len(k) |
| 105 | if l > nl { |
| 106 | if str[l-nl:] == k { |
| 107 | str = str[:l-nl] + "_" + strings.ToLower(k) |
| 108 | break |
| 109 | } |
| 110 | } |
| 111 | } |
| 112 | |
| 113 | str = xstrings.ToSnakeCase(str) |
| 114 | if strings.HasPrefix(str, "__") { |
| 115 | str = str[1:] |
| 116 | } |
| 117 | |
| 118 | return str |
| 119 | } |