package igpay

import "strings"

// PigLatin takes some words and converts them to pig latin
// 1) Move starting consonant sounds to the end of the word
// 2) add 'ay'
func PigLatin(in string) string {
	var ret string
	words := strings.Split(in, " ")
	for i := range words {
		ret += pigLatinWord(words[i])
		if i < len(words)-1 {
			ret += " "
		}
	}
	return ret
}

// pigLatinWord actually does the heavy lifting
func pigLatinWord(in string) string {
	var ret string
	// First move all consonant sounds to the end
	for i := 0; i < len(in); i++ {
		// Edge consonant sound cases
		if in[0] == 'q' && in[1] == 'u' {
			in = in[2:] + string(in[0]) + string(in[1])
		}

		vowelPos := strings.IndexAny(in, "aeiou")

		// If we have a y and another vowel, then y is a consonant
		// also, x
		if vowelPos == 0 || (vowelPos > 1 && (in[0] == 'y' || in[0] == 'x')) {
			return in + "ay"
		}
		in = in[1:] + string(in[0])
	}

	return ret
}
