var { safeLoad, safeDump } = require('js-yaml')
var fs = require('fs')
var path = require('path')
let R = require('ramda')

let externalizationPath = 'source/règles/externalized.yaml'

let rules = safeLoad(
	fs.readFileSync(path.resolve('source/règles/base.yaml'), 'utf-8')
)

let currentExternalization = safeLoad(
	fs.readFileSync(path.resolve(externalizationPath), 'utf-8')
)

let attributesToExternalize = [
	'titre',
	'description',
	'question',
	'résumé',
	'suggestions',
	'contrôles'
]

let buildDottedName = rule =>
	rule.espace ? rule.espace + ' . ' + rule.nom : rule.nom

let resolved = rules
	.map(rule => (!rule.titre ? { ...rule, titre: rule.nom } : rule))
	.map(rule => ({
		[buildDottedName(rule)]: R.mergeAll(
			R.toPairs(rule)
				.filter(([, v]) => !!v)
				.map(([k, v]) => {
					let attrToTranslate = attributesToExternalize.find(R.equals(k))
					if (!attrToTranslate) return {}
					let enTrad = attrToTranslate + '.en',
						frTrad = attrToTranslate + '.fr'

					let currentTranslation = currentExternalization[buildDottedName(rule)]
					//Check if a human traduction exists already for this attribute
					if (currentTranslation && currentTranslation[enTrad])
						return {
							[enTrad]: currentTranslation[enTrad],
							[frTrad]: v
						}

					return {
						[enTrad]: '!!' + v,
						[frTrad]: v
					}
				})
		)
	}))
fs.writeFileSync(externalizationPath, safeDump(R.mergeAll(resolved)))