2016-07-25 1 views
1

J'ai un vrai débutant question à l'aide scala-metaEn utilisant scala-meta pour annoter une classe de cas

Je veux ajouter des annotations à un sous-ensemble des champs d'une classe de cas basée sur le nom du champ. Les classes et les champs à annoter sont définis comme suit:

val classMapping = Map[String,String](
    ("com.example.employees","""OntologyContext("http://schema.org")"""), 
    ("Employee.scala","""OntologyType("person")""") 
) 

val fieldMapping = Map[String,String](
    ("hello","""OntologyRef("name")"""), 
    ("job","""OntologyRef("title")"""),("id","""Obfuscated""") 
) 

Avant:

package com.example.employees 
import java.time.LocalDate 
case class Employee(
    hello: String, 
    job:String, 
    id:String, 
    employmentDate: Date) 

Après:

package com.example.employees 
import java.time.LocalDate 
@OntologyContext(“http://schema.org”) 
@OntologyType(“person”) 
case class Employee(
    @OntologyRef(“name”) hello: String, 
    @OntologyRef(“title”) job: String, 
    @Obfuscated() id:String, 
    employmentDate: Date 
) 

Ma question porte sur la syntaxe des quasiquotes qui sont nécessaires la transformation de l'arbre:

  1. sélectionnant le champ indiqué; et
  2. insertion des annotations

Pouvez-vous me référer à des exemples qui peuvent me pointer dans la bonne direction?

Répondre

0

Now it's supported avec scala.meta 1.1.0 et le paradis macro-3.0.0 M5

encore des problèmes avec les paramètres nommés

-1

Note: la dernière IntelliJ IDEA 2016.3 (déc 2016) devrait permettre d'utiliser ces quasiquotes, car ils sont désormais pris en charge:

Une autre amélioration du plugin important est le soutien à scala.meta - la nouvelle boîte à outils metaprogramming dési pour réussir scala.reflect.
IntelliJ IDEA prend en charge les annotations de macros de style nouveau et fournit une assistance de codage pour les notes quasi-scala.meta.

https://d3nmt5vlzunoa1.cloudfront.net/scala/files/2016/11/image00.png

La nouvelle version du plugin apporte des icônes pour gouttière scala.meta annotations macro. Cliquez sur ces icônes pour développer les annotations correspondantes.
IntelliJ IDEA détecte automatiquement les changements d'annotations et vous invite à les recompiler via l'icône de gouttière (ou l'action Recompiler standard.)