package wordcount

import (
	"regexp"
	"strings"
)

// TestVersion is an exercism thing
const TestVersion = 1

// Frequency is the return type
type Frequency map[string]int

// WordCount returns how many of each word in 'phrase'
func WordCount(phrase string) Frequency {
	ret := make(Frequency)
	words := strings.Split(phrase, " ")
	cleanUp, _ := regexp.Compile("[^A-Za-z0-9]")
	for _, v := range words {
		// The test cases assume that we're stripping non-alphanumeric runes
		// and making it lower case
		v = strings.ToLower(cleanUp.ReplaceAllString(v, ""))
		if v != "" {
			ret[v]++
		}
	}
	return ret
}
