1
0
Fork 0
mirror of https://github.com/betagouv/mon-entreprise synced 2025-02-09 01:45:03 +00:00
mon-entreprise/source/engine/variables.js
mama 4886f0ca1c 🐛 Les saisies numériques ont maintenant le bon format
Solution pratique mais pas élégantes aux formats d'entrée
2017-05-02 16:53:56 +02:00

29 lines
888 B
JavaScript

import R from 'ramda'
import {parentName, nameLeaf, findRuleByDottedName, splitName, joinName} from './rules'
let evaluateBottomUp = situationGate => startingFragments => {
let rec = (parentFragments, childFragments=[]) =>
parentFragments.length == 0 ? null
: ( do {
let query = joinName(parentFragments),
expectedResult = ( R.isEmpty(childFragments) ? 'oui' : joinName(childFragments) )
situationGate(query) == null ?
rec(
R.dropLast(1)(parentFragments),
[ R.last(parentFragments), ...childFragments]
)
: situationGate(query) == expectedResult
})
return rec(startingFragments)
}
export let evaluateVariable = (situationGate, variableName, format) => {
// test rec
let value = situationGate(variableName)
return format != null ?
(value == undefined ? null : value)
: evaluateBottomUp(situationGate)(splitName(variableName))
}