package acronym import "strings" const testVersion = 1 func abbreviate(inp string) string { var ret string for _, wrd := range strings.Fields(inp) { var newWrd []rune for _, b := range wrd { if (b >= 'A' && b <= 'Z') || (b >= 'a' && b <= 'z') { newWrd = append(newWrd, b) } else { if len(newWrd) > 0 { ret = ret + testWord(string(newWrd)) newWrd = []rune{} } } } ret = ret + testWord(string(newWrd)) } return strings.ToUpper(ret) } // testWord figures out the abbreviation letters for // the given word func testWord(inp string) string { if len(inp) == 0 { return "" } if inp == strings.ToUpper(inp) { // the whole word is capitalized, return // the first letter return string(inp[0]) } var ret string // Find uppercase characters to return for i, s := range inp { st := string(s) if i == 0 || st == strings.ToUpper(st) { ret = ret + st } } return ret }