jsonやprotobufのtextformatからScalaPBのcase classに変換するマクロ

作りました。

実際に最初に作ったのは1年以上前で、仕事のコードの一部に入れていたのですが、いろいろ整理したり機能加えて、OSSにして公開しました。

以下関連コミット

リポジトリ自体は、以前書いたこれ

xuwei-k.hatenablog.com

を使い、別のartifactとして追加しました。(つまりsbtのマルチプロジェクトに変えた)

マクロでコンパイル時にjsonリテラルや、protobufのtextformatのリテラルをparseして、コンパイル時チェック(不正だったらコンパイルエラー)にしてくれる機能があります。コンパイル時にparseするやつは、完全なリテラルのStringしか対応してません。

また、protobufにはstructやvalueという、json用の型もあるのですが、それらをマクロでコンパイル時にparseして組み立てる機能も入れました。

また、コンパイル時にはチェックしないけど、Javaのclassに一旦変換する関係上、(Java <=> Scalaのclass名の規則が特殊な場合もあって面倒なので)、"コンパイル時リフレクション"を使って、いい感じに一発で変換する機能もつけました。

以下のようなことに悩んでいたけれど、

一部のモジュールは結局scala-jsやscala-nativeでも動いた気がします。単純な設定ミスだったのか、たまたま動いてるだけで実は潜在的に問題があるのか?は、よくわかってません。

使い方の例とかドキュメント全然ないけど、まぁテストコード見てください・・・。 気が向いたらもう少し書くかもしれません or pull reqください