package moji

import "strings"

func KataHira(kata rune) rune {
	/* Katakana to hiragana */
	if kata >= 0x30a0 && kata <= 0x30ff {
		kata -= 0x60
	}
	return kata
}

func Romaji(kana string) (romaji string) {
	runes := []rune(kana)
	for _, r := range runes {
		r = KataHira(r)
		romaji += Consonant[r] + Vowel[r]
	}
	romaji = strings.Replace(romaji, "sixy", "sh", -1)
	romaji = strings.Replace(romaji, "ixy", "y", -1)
	romaji = strings.Replace(romaji, "zy", "j", -1)
	romaji = strings.Replace(romaji, "si", "shi", -1)
	romaji = strings.Replace(romaji, "tu", "tsu", -1)
	romaji = strings.Replace(romaji, "ty", "ch", -1)

	reformat := strings.NewReplacer(
		"ixy", "y",
		"zy", "j",
		"si", "shi",
		"tu", "tsu",
		"ty", "ch",
	)
	romaji = reformat.Replace(romaji)
	return romaji
}