From d0726b616ccf51c16932cc474730ad5cbe9437b2 Mon Sep 17 00:00:00 2001 From: Mael Date: Tue, 7 Aug 2018 20:46:26 +0200 Subject: [PATCH] =?UTF-8?q?:cogs:=20Ajout=20du=20type=20bool=C3=A9en=20dan?= =?UTF-8?q?s=20la=20syntaxe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/engine/grammar.ne | 8 +++++++- source/engine/treat.js | 31 +++++++++++++++++++++++++------ source/règles/base.yaml | 18 ++++++++++++++---- 3 files changed, 46 insertions(+), 11 deletions(-) diff --git a/source/engine/grammar.ne b/source/engine/grammar.ne index 5851e8972..654698561 100644 --- a/source/engine/grammar.ne +++ b/source/engine/grammar.ne @@ -3,6 +3,7 @@ main -> CalcExpression {% id %} + | Boolean {% id %} | Variable {% id %} | NegatedVariable {% id %} | ModifiedVariable {% id %} @@ -54,7 +55,6 @@ ArithmeticOperator -> "+" {% id %} | "/" {% id %} -# BooleanVariableExpression -> ("!" _):? Variable {% d => (['BooleanVariableExpression', ...d]) %} Variable -> VariableFragment (_ Dot _ VariableFragment {% d => d[3] %}):* {% d => ({ @@ -82,3 +82,9 @@ _ -> [\s] {% d => null %} number -> [0-9]:+ ([\.] [0-9]:+):? {% d => ({category: 'value', nodeValue: parseFloat(d[0].join("")+(d[1]?(d[1][0]+d[1][1].join("")):""))}) %} percentage -> [0-9]:+ ([\.] [0-9]:+):? [\%] {% d => ({category: 'percentage', nodeValue: parseFloat(d[0].join("")+(d[1]?(d[1][0]+d[1][1].join("")):""))/100}) %} + +Boolean -> "oui" {% d=> ({category: 'boolean', nodeValue: true}) %} + | "non" {% d=> ({category: 'boolean', nodeValue: false}) %} + + + diff --git a/source/engine/treat.js b/source/engine/treat.js index b7f3a3bfc..c8d7749d2 100644 --- a/source/engine/treat.js +++ b/source/engine/treat.js @@ -60,10 +60,18 @@ export let treatString = (rules, rule) => rawNode => { let [parseResult, ...additionnalResults] = nearley().feed(rawNode).results - if (additionnalResults && additionnalResults.length > 0) - throw "Attention ! L'expression <" + - rawNode + - '> ne peut être traitée de façon univoque' + if ( + additionnalResults && + additionnalResults.length > 0 && + parseResult.category !== 'boolean' + ) { + // booleans, 'oui' and 'non', have an exceptional resolving precedence + throw new Error( + "Attention ! L'expression <" + + rawNode + + '> ne peut être traitée de façon univoque' + ) + } if ( !contains(parseResult.category)([ @@ -72,10 +80,13 @@ export let treatString = (rules, rule) => rawNode => { 'filteredVariable', 'comparison', 'negatedVariable', - 'percentage' + 'percentage', + 'boolean' ]) ) - throw "Attention ! Erreur de traitement de l'expression : " + rawNode + throw new Error( + "Attention ! Erreur de traitement de l'expression : " + rawNode + ) if (parseResult.category == 'variable') return treatVariable(rules, rule)(parseResult) @@ -90,6 +101,14 @@ export let treatString = (rules, rule) => rawNode => { treatVariable(rules, rule)(parseResult.variable) ) + if (parseResult.category == 'boolean') { + return { + nodeValue: parseResult.nodeValue, + // eslint-disable-next-line + jsx: () => {rawNode} + } + } + // We don't need to handle category == 'value' because YAML then returns it as // numerical value, not a String: it goes to treatNumber if (parseResult.category == 'percentage') diff --git a/source/règles/base.yaml b/source/règles/base.yaml index 21fdb5982..cdb913e57 100644 --- a/source/règles/base.yaml +++ b/source/règles/base.yaml @@ -681,13 +681,23 @@ - CDD par défaut: CDI + +- espace: contrat salarié + nom: assimilé salarié + description: | + Certains dirigeants d'entreprise (c'est notamment le cas pour les SASU) sont considérés par la sécurité sociale comme assimilés aux salariés. Ils sont alors au régime général de la sécurité sociale. + question: Le salarié est-il considéré comme "assimilé salarié" ? + références: + Le régime des dirigeants: https://www.urssaf.fr/portail/home/employeur/creer/choisir-une-forme-juridique/le-statut-du-dirigeant/les-dirigeants-rattaches-au-regi.html + + - espace: contrat salarié nom: type de contrat formule: variations: - - si: assimilé + - si: assimilé salarié alors: CDI - - sinon: choix type de contrat + - sinon: choix du type de contrat - espace: contrat salarié . type de contrat nom: CDD @@ -809,8 +819,8 @@ nom: statut cadre formule: variations: - - si: assimilé - alors: 'oui' + - si: assimilé salarié + alors: oui - sinon: choix statut cadre - espace: contrat salarié