/**
 * Crimean Tatar (Qırımtatarca) conversion code.
 * @module
 */

'use strict';

require('../../core-upgrade.js');

const { Language } = require('./Language.js');
const { LanguageConverter } = require('./LanguageConverter.js');
const { ReplacementMachine } = require('wikimedia-langconv');

class CrhConverter extends LanguageConverter {
	loadDefaultTables() {
		this.mTables = new ReplacementMachine('crh', 'crh-latn', 'crh-cyrl');
	}
	// do not try to find variants for usernames
	findVariantLink(link, nt, ignoreOtherCond) {
		const ns = nt.getNamespace();
		if (ns.isUser() || ns.isUserTalk) {
			return { nt, link };
		}
		// FIXME check whether selected language is 'crh'
		return super.findVariantLink(link, nt, ignoreOtherCond);
	}
}

class LanguageCrh extends Language {
	constructor() {
		super();
		const variants = ['crh', 'crh-cyrl', 'crh-latn'];
		const variantfallbacks = new Map([
			['crh', 'crh-latn'],
			['crh-cyrl', 'crh-latn'],
			['crh-latn', 'crh-cyrl'],
		]);
		this.mConverter = new CrhConverter(
			this, 'crh', variants, variantfallbacks
		);
	}
}

module.exports = LanguageCrh;