mirror of
https://github.com/betagouv/mon-entreprise
synced 2025-02-09 04:05:01 +00:00
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.
57 lines
1.4 KiB
JavaScript
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)))
|