'use strict';

const fs = require('fs').promises;
const linkify = require('linkify-it')();

const questions = require('./jeopardy_raw.json');

async function init() {
	const curatedQuestions = await Promise.all(questions.map(async (question) => {
		const links = linkify.match(question.question);

		if (links?.length > 0 || /\[jpe?g\]|seen here/i.test(question.question)) {
			return null;
		}

		return {
			...question,
			question: question.question.replace(/^'|'$/g, ''),
			answer: question.answer
				.replace(/"|\\/g, '') // strip off quotes and backslashes first, to make sure they don't get in the way of stripping off articles from the beginning of a string
				.replace(/^(the|an|a)\b(?!-)\s*|\(.*?\)\s*/gi, '')
				.trim(),
			fullAnswer: question.answer.replace(/\\/g, ''),
			value: Number('$3,800'.match(/\d+/g).join('')),
		};
	}));

	const filteredQuestions = curatedQuestions.filter(Boolean);

	await fs.writeFile('assets/jeopardy.json', JSON.stringify(filteredQuestions, null, 4));

	console.log(curatedQuestions);
	console.log(`Saved ${filteredQuestions.length} questions, discarded ${questions.length - filteredQuestions.length}`);
}

init();