1
0
Fork 0
mirror of https://github.com/betagouv/mon-entreprise synced 2025-02-09 02:55:01 +00:00
mon-entreprise/source/scripts/externalize.js
Maxime Quandalle c54dfd2033
🔨 Nouveaux seuils loi pacte
J'ai essayé de supprimer complétement la variable entreprise . effectif
(numérique) pour la remplacer par une variable seuil qui soit la "source
de vérité" utilisée dans les formules de calcul. Malheureusement il y a
quelques endroits où persistent des anciens seuil, et où la valeur
précise de l'effectif est utilisée (taxe sur les salaires par exemple,
bien que l'utilisation dans cette formule soit une approximation assez
grossière).

En attendant d'améliorer notre gestion des variables à l’échelle de
l'entreprise, l’implémentation retenue permet de simplifier la saisie
(on clique sur un seuil plutôt que de saisir une effectif précis à
l'unité près) sans cassé les formules existantes.
2019-12-26 17:42:50 +01:00

57 lines
1.4 KiB
JavaScript

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 resolved = Object.entries(rules)
.map(([dottedName, rule]) => [
dottedName,
!rule || !rule.titre
? { ...rule, titre: dottedName.split(' . ').slice(-1)[0] }
: rule
])
.map(([dottedName, rule]) => ({
[dottedName]: 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[dottedName]
//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)))