2012-07-10 3 views
3

J'ai écrit une transformation AST globale qui devrait être appliquée aux scripts DSL, et je suis en train de sélectionner la meilleure façon d'identifier des scripts groovy spécifiques comme ces scripts DSL.Scripts DSL Groovy

Je considérais les options suivantes:

  1. Une extension de fichier personnalisé; Le plus gros inconvénient ici est le support de l'EDI: beaucoup supportent à peine la compilation/édition de fichiers qui ont des extensions non-groovy (vous pouvez configurer un éditeur mais cela nécessite quelques réglages).
  2. Un suffixe de nom de fichier spécial (préfixe) mais dans ce cas le suffixe doit être vraiment unique (et donc relativement long) pour éviter la transformation accidentelle de fichiers groovy réguliers (mon choix actuel).
  3. Une transformation AST locale appliquée à une classe de script, cela a pour inconvénient que l'on devrait écrire un code standard pour chaque script.
  4. Avoir une première instruction unique dans les scripts qui identifiera le DSL.

Selon vous, quelle serait la meilleure option et pourquoi? Y a-t-il d'autres options à ma disposition auxquelles je n'ai pas pensé?

Répondre

0

Si vous compilez vos scripts DSL à l'aide de GroovyShell, vous pouvez utiliser CompilerConfiguration.addCompilationCustomizer(ASTTransformationCustomizer( YourGlobalASTTransformation)) pour leur appliquer la transformation.

+0

Pour des raisons de performances, je souhaite appliquer des transformations au moment de la compilation. Aussi, il me permet d'exécuter des scripts comme 'execute (NomClasse)' au lieu de 'execute (" chemin/vers/le/script/NomClasse.groovy ")' – Nutel

Questions connexes