⚙️ Ajout du mécanisme de négation de variables booléennes
Utilisation du symbole ¬ pour l'instant. Sûrement sujet à évolutionspull/2/head
parent
c16d0fa823
commit
15776d21cb
|
@ -6,8 +6,9 @@
|
|||
destinataire: AGIRC
|
||||
description: |
|
||||
Cotisation de retraite complémentaire cadre. Complète le régime ARRCO, gérée par l'AGIRC (Association Générale des Institutions de Retraite des Cadres)
|
||||
non applicable si: statut cadre # TODO l'inverse ! Vérifier le fonctionnnement de la négation !statut cadre OU statut cadre = non OU applicable si: statut cadre
|
||||
|
||||
#TODO double négation en attendant d'ajouter 'applicable si'
|
||||
non applicable si: ≠ statut cadre
|
||||
formule:
|
||||
barème:
|
||||
assiette: salaire de base #TODO devrait être assiette cotisations sociales. Mais elle contient les primes CDD
|
||||
|
|
|
@ -12,7 +12,8 @@
|
|||
notes: |
|
||||
Avant 2011, il y avait une cotisation forfaitaire au lieu de la tranche A
|
||||
|
||||
non applicable si: statut cadre # TODO l'inverse ! Vérifier le fonctionnnement de la négation !statut cadre OU statut cadre = non OU applicable si: statut cadre
|
||||
#TODO double négation en attendant d'ajouter 'applicable si'
|
||||
non applicable si: ≠ statut cadre
|
||||
|
||||
formule:
|
||||
barème:
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
# Pour éditer ou comprendre ce fichier, utilisez l'éditeur web Nearley : https://omrelli.ug/nearley-playground/
|
||||
|
||||
|
||||
main ->
|
||||
CalcExpression {% id %}
|
||||
| Variable {% id %}
|
||||
| ModifiedVariable {% id %}
|
||||
| Comparison {% id %}
|
||||
CalcExpression {% id %}
|
||||
| Variable {% id %}
|
||||
| NegatedVariable {% id %}
|
||||
| ModifiedVariable {% id %}
|
||||
| Comparison {% id %}
|
||||
|
||||
Comparison -> Comparable _ ComparisonOperator _ Comparable {% d => ({
|
||||
category: 'comparison',
|
||||
|
@ -17,11 +19,16 @@ Comparable -> (int | CalcExpression | Variable) {% d => d[0][0] %}
|
|||
|
||||
ComparisonOperator -> ">" | "<" | ">=" | "<=" | "="
|
||||
|
||||
NegatedVariable -> "≠" _ Variable {% d => ({category: 'negatedVariable', variable: d[2] }) %}
|
||||
|
||||
# Modificateurs temporels pas utilisés aujourd'hui
|
||||
ModifiedVariable -> Variable _ Modifier {% d => ({category: 'modifiedVariable', modifier: d[2], variable: d[0] }) %}
|
||||
|
||||
Modifier -> "[" TemporalModifier "]" {% d =>d[1][0] %}
|
||||
|
||||
TemporalModifier -> "annuel" | "mensuel" | "jour ouvré" {% id %}
|
||||
#-----
|
||||
|
||||
|
||||
CalcExpression -> Term _ ArithmeticOperator _ Term {% d => ({
|
||||
category: 'calcExpression',
|
||||
|
@ -31,7 +38,7 @@ CalcExpression -> Term _ ArithmeticOperator _ Term {% d => ({
|
|||
}) %}
|
||||
|
||||
Term -> Variable {% id %}
|
||||
| int {% id %}
|
||||
| int {% id %}
|
||||
|
||||
ArithmeticOperator -> "+" {% id %}
|
||||
| "-" {% id %}
|
||||
|
|
|
@ -90,6 +90,28 @@ let fillVariableNode = (rule, situationGate) => (parseResult) => {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
let buildNegatedVariable = variable => {
|
||||
let nodeValue = variable.nodeValue == null ? null : !variable.nodeValue
|
||||
return {
|
||||
nodeValue,
|
||||
category: 'mecanism',
|
||||
name: 'négation',
|
||||
type: 'boolean',
|
||||
explanation: variable,
|
||||
jsx: <Node
|
||||
classes="inlineExpression negation"
|
||||
value={nodeValue}
|
||||
child={
|
||||
<span className="nodeContent">
|
||||
<span className="operator">¬</span>
|
||||
{variable.jsx}
|
||||
</span>
|
||||
}
|
||||
/>
|
||||
}
|
||||
}
|
||||
|
||||
let treat = (situationGate, rule) => rawNode => {
|
||||
let reTreat = treat(situationGate, rule)
|
||||
|
||||
|
@ -104,11 +126,15 @@ let treat = (situationGate, rule) => rawNode => {
|
|||
|
||||
if (additionnalResults && additionnalResults.length > 0) throw "Attention ! L'expression <" + rawNode + '> ne peut être traitée de façon univoque'
|
||||
|
||||
if (!R.contains(parseResult.category)(['variable', 'calcExpression', 'modifiedVariable', 'comparison']))
|
||||
if (!R.contains(parseResult.category)(['variable', 'calcExpression', 'modifiedVariable', 'comparison', 'negatedVariable']))
|
||||
throw "Attention ! Erreur de traitement de l'expression : " + rawNode
|
||||
|
||||
if (parseResult.category == 'variable')
|
||||
return fillVariableNode(rule, situationGate)(parseResult, rawNode)
|
||||
return fillVariableNode(rule, situationGate)(parseResult)
|
||||
if (parseResult.category == 'negatedVariable')
|
||||
return buildNegatedVariable(
|
||||
fillVariableNode(rule, situationGate)(parseResult.variable)
|
||||
)
|
||||
|
||||
if (parseResult.category == 'calcExpression') {
|
||||
let
|
||||
|
|
Loading…
Reference in New Issue