let trainingText = "";
let wordList = [];
let wordListPlain = [];
let startWord = "";
let finalText = "";
let cleanedText = "";
async function setup() {
	trainingText = await loadStrings('assets/text/cpdv_text_only.txt');
	createCanvas(windowWidth, windowHeight)
	background(255, 255, 230)

	console.log(trainingText);
	trainingText = splitText(trainingText);
	console.log(trainingText);
	for (i = 0; i < trainingText.length; i++) {
		if (wordList.indexOf(trainingText[i]) == -1) {
			if (i % 1000 == 0) {
				console.log('i',i);
			}
			wordList.push([trainingText[i], []]);
			wordListPlain.push(trainingText[i]);
			for (j = i; j < trainingText.length; j++) {
				if (trainingText[j] == wordList[wordList.length - 1][0]) {
					if (trainingText[j + 1] != undefined){
						wordList[wordList.length - 1][1].push(trainingText[j + 1]);
					}
				}
			}
		}
	}

	console.log(wordList);
	startWord = wordList[round(random(0, wordList.length - 1))][0];
	finalText = startWord;

	for (i = 0; i < 100; i++) {
		startWord = generateNextWord(startWord);
		console.log(startWord)
		finalText += " " + startWord;
	}

	textSize(19)
	console.log(finalText)
	text(finalText, 10, height / 2)
}

function splitText(text) {
	for (i = 0; i < text.length; i++) {
		cleanedText += " " + text[i];
	}
	cleanedText = cleanedText
				.replaceAll(".", " . ")
				.replaceAll("!", " ! ")
				.replaceAll("?", " ? ")
				.replaceAll(",", " , ")
				.replaceAll(";", " ; ")
				.replaceAll(":", " : ")
				.replaceAll('"', ' " ')
				.replaceAll("'", " ' ")
				.replaceAll("  "," ")
				.replaceAll("  "," ")
				.split(" ");
	return cleanedText;
}

function generateNextWord(currentWord) {
	let currentWordIndex = getWordIndex(currentWord);
	let nextWordIndex = round(
					random(
						0, wordList[currentWordIndex][1].length - 1
					)
				);
	//retun . if end of text
	if (wordList[currentWordIndex][1][nextWordIndex] == undefined){
		return '.';
	}
	return wordList[currentWordIndex][1][nextWordIndex];

}

function getWordIndex(word) {
	return wordListPlain.indexOf(word);
}

function draw() {

}

function mousePressed() {
}