1
0
Fork 0
mirror of https://github.com/betagouv/mon-entreprise synced 2025-02-09 04:05:01 +00:00
mon-entreprise/publicodes/source/evaluationFunctions.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

18 lines
530 B
TypeScript

import { EvaluationFunction } from '.'
import { ASTNode } from './AST/types'
export let evaluationFunctions = {
constant: (node) => node,
} as any
export function registerEvaluationFunction<
NodeName extends ASTNode['nodeKind']
>(nodeKind: NodeName, evaluationFunction: EvaluationFunction<NodeName>) {
evaluationFunctions ??= {}
if (evaluationFunctions[nodeKind]) {
throw Error(
`Multiple evaluation functions registered for the nodeKind \x1b[4m${nodeKind}`
)
}
evaluationFunctions[nodeKind] = evaluationFunction
}