Я экспортирую функции Scala во внешний формат. Для этой цели я использую scala.meta
и StaticAnnotation
. Что-то вроде:Как сохранить сахар, форматирование и пробелы в макрокомандах (inline-meta)?
@ExportFunctions
object MyFunctions {
def max(x: Int, y: Int): Int = x max y
}
class ExportFunctions extends StaticAnnotation {
inline def apply(defn: Any): Any = meta {
defn match {
case q"object $name extends { ..$earlydefns } with ..$parents { ..$stats }" =>
stats.flatMap{
case [email protected](modifiers, fname, tparams, paramss, Some(returnType), body) =>
println(body.syntax)
}
case _ =>
}
defn
}
}
В реализации ExportFunctions extends StaticAnnotation
тело функций представляется в виде Обессахаренный дерева: x.max(y)
.
Однако для целей документации было бы намного лучше иметь исходный код. Или, по крайней мере, сахар (x max y
).
Есть ли способ сохранить исходное форматирование/сахар?