// D'abord on écrit la base de règles de calcul de l'impôt dans notre nouveau langage
base = `
- nom: revenu imposable
format: euros
- nom: revenu abattu
formule:
allègement:
assiette: revenu imposable
abattement: 10%
- nom: impôt sur le revenu
formule:
barème:
assiette: revenu abattu
tranches:
- en-dessous de: 9807
taux: 0%
- de: 9807
à: 27086
taux: 14%
- de: 27086
à: 72617
taux: 30%
- de: 72617
à: 153783
taux: 41%
- au-dessus de: 153783
taux: 45%
- nom: impôt final
formule:
allègement:
assiette: impôt sur le revenu
décote:
plafond: 1177
taux: 75%
`
// Puis on écrit les instructions de notre calcul
instructions = [
// 1) ce que l'on veut calculer, notre objectif :
'impôt final',
// 2) nos données d'entrée, qui décrivent notre situation :
{
'revenu imposable': 2000*12
},
// 3) la base de règles, qui contient notamment la règle 'impôt final' et la règle 'revenu imposable'
{
base
}
]
// On charge la bibliothèque de calcul publiée par l'Etat
require("mon-entreprise@1.2.1")
// Et finalement, on lance le calcul !
.default.evaluate(...instructions)
// et hop, on obtient le même résultat !
On part d'un code dégueu, on l'améliore jusqu'à le présenter dans une interface Web explorable.
Code dégueu pour un célibataire (donc pas d'histoire de parts).