
import {Nomen} from "../nomen.js"
import {Grammar} from "../grammar.js"

export function falryskNameGrammar() {
	const person = Nomen
		.dictionary({
			prefix: [
				"Aed", "Ael", "Aer", "Aeg",
				"Aes", "Aet", "Aeon", "Aek",
				"Årg", "Ard", "Arn", "Ayn",
				"Ar", "Ad", "Atl", "An",
				"And", "Anr", "Ain", "Ayn",
				"End", "Esk", "Eld", "Ŏln",
				"Elg", "Erd", "Eyn", "Esn",
				"Olf", "Of", "Oy", "Oc",
				"War", "Wer", "Wot", "Wal",
				"Gäl", "Gar", "Gaer", "Gir",
				"Gor", "Gil", "Ger", "Gan",
				"Thós", "Thès", "Tír", "Tal",
				"Fâl", "Fen", "Fel", "Fol",
				"Fír", "For", "Feyt", "Fern",
				"Feyn", "Fayn", "Feln", "Faln",
				"Ven", "Van", "Vèl", "Val",
				"Veyn", "Vayn", "Veyl", "Vayl",
				"Nýz", "Nor", "Nal", "Nyn",
				"Mór", "Mar", "Myor", "Mor",
				"Lom", "Lem", "Lorn", "Leyn",
				"Kal", "Kel", "Kyel", "Kol",
				"Shel", "Shen", "Shal", "Shey",
				"Pip", "Par", "Pyot", "Poy",
				"Thar", "Ther", "Thor", "Thel",
				"Uyn", "Uer", "Usn", "Uin",
				"Yön", "Yès", "Yol", "Yel",
				"Xen", "Zael", "Zaer", "Zod",
				"Aʼ", "Oʼ",
			],

			suffix: [
				"th", "st", "yt", "ft",
				"sk", "rk", "rd", "nd",
				"by", "cy", "ry", "ny",
				"yn", "vn", "vy", "ly",
				"rik", "rek", "nok", "rôk",
				"bie", "rie", "lie",
				"nar", "råg", "lg", "rn",
			],

			o: [..."aaeeiou"],
			x: [..."bcdfghklmnprstvwxyz"],

			oo: [
				"au", "ea", "ía", "oa",
				"áe", "ës", "ie", "oé",
				"aí", "ei", "iû", "uî",
				"al", "eo", "io", "us",
			],

			ox: [
				"ës", "us", "is", "os",
				"as", "ar", "er", "or",
				"ad", "ed", "id", "od",
				"aw", "ew", "iw", "ow",
			],

			xox: [
				"nak", "nëk", "nud", "nok",
				"rár", "råth", "ýeg", "rin",
				"wég", "wug", "wøg",
			],

			oxo: [
				"ana", "ëna", "anu", "irá",
				"arna", "erna", "arnû", "irna",
				"ánla", "ënla", "arlu", "irla",
				"ára", "atho", "oýo", "ina",
				"éwe", "uwa", "øga",
			],
		})
		.patterns([
			[["prefix", "o"]],
			[["prefix", "oo"]],
			[["prefix", "ox"]],
			[["prefix", "oxo"]],

			[["prefix", "o", "suffix"]],
			[["prefix", "o", "suffix"]],
			[["prefix", "o", "suffix"]],
			[["prefix", "o", "suffix"]],

			[["prefix", "oo", "suffix"]],
			[["prefix", "oxo", "suffix"]],

			// // long names
			// [["prefix", "oo", "x", "oo", "suffix"]],
			// [["prefix", "o", "x", "oo", "suffix"]],
		])

	return Grammar
		.phrases({
			first: b => person.generate(b),
			last: b => person.generate(b),
		})
		.templates([
			o => `${o.first} ${o.last}`,

			// // long names
			// o => `${o.first} of ${o.last}`,
			// o => `${o.first} from ${o.last}`,
		])
}

