1
0
Fork 0
mirror of https://github.com/betagouv/mon-entreprise synced 2025-02-10 01:05:02 +00:00
mon-entreprise/publicodes/source/reference.ts
Maxime Quandalle e1941078c0
Sort les fonctions jsx de l'AST (#1275)
* ⚙️ Sort les fonctions JSX de l'AST

Remplace la fonction makeJsx par un composant React <Explanation />

Déplace presque tout le code React dans le répertoire components/ en
prévision de sa séparation dans un paquet dédié.

* ⚙️ Renomme le nœud "replacement" en "replacementRule"

* ⚙️ Ajout d'un attribut visualisationKind pour les mécanismes transformées

* ⚙️ Retours PR 1275
2020-12-08 12:40:54 +01:00

38 lines
967 B
TypeScript

import { EvaluatedNode } from './AST/types'
import { InternalError } from './error'
import { registerEvaluationFunction } from './evaluationFunctions'
import { Context } from './parsePublicodes'
import { RuleNode } from './rule'
export type ReferenceNode = {
nodeKind: 'reference'
name: string
explanation?: RuleNode & EvaluatedNode
contextDottedName: string
dottedName?: string
}
export default function parseReference(
v: string,
context: Context
): ReferenceNode {
return {
nodeKind: 'reference',
name: v,
contextDottedName: context.dottedName,
}
}
registerEvaluationFunction('reference', function evaluateReference(node) {
if (!node.dottedName) {
throw new InternalError(node)
}
const explanation = this.evaluateNode(this.parsedRules[node.dottedName])
return {
...node,
explanation,
missingVariables: explanation.missingVariables,
nodeValue: explanation.nodeValue,
...('unit' in explanation && { unit: explanation.unit }),
}
})