使用scala-meta注释案例类

时间:2016-07-25 13:19:46

标签: scala scala-meta

我使用scala-meta

有一个真正的初学者问题

我想根据字段的名称将注释添加到案例类字段的子集中。 要注释的类和字段定义如下:

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""")
)

在:

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

后:

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
)

我的问题涉及树转换中所需的quasiquotes的语法:

  1. 选择指定的字段;和
  2. 插入注释
  3. 您能否向我推荐任何可以指明我正确方向的例子?

3 个答案:

答案 0 :(得分:0)

如果我理解正确,目前不可能。 Scala-meta注释宏不支持参数https://github.com/scalameta/paradise/issues/11

答案 1 :(得分:0)

Now it's supported与scala.meta 1.1.0和宏天堂3.0.0-M5

仍然存在命名参数问题

答案 2 :(得分:-1)

注意:最新的IntelliJ IDEA 2016.3(2016年12月)应该有助于使用这些quasiquotes,因为现在支持它们:

  

另一个主要的插件改进是对scala.meta的支持 - 新的元编程工具包旨在成功scala.reflect
  IntelliJ IDEA支持新式宏注释,并为scala.meta quasiquotes提供编码帮助。

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

  

新的插件版本为您带来scala.meta宏注释的装订图标。单击这些图标可展开相应的注释   IntelliJ IDEA会自动检测注释何时更改,并提示您通过装订线图标(或标准的重新编译操作)重新编译注释。