我正在考虑编写一个代码生成器来从google protobuf定义文件生成scala。我认为它有价值的原因是Java绑定太过Java-ish而且在scala中可以做得更好。 例如,对于以下定义
message Foo {
required int F1 = 1;
repeated string F2 = 2;
message Inner (
required int F3 = 1;
)
}
我希望能够像这样从Scala构造proto对象:
val foo = Foo (
F1(127),
F2("first", "second"),
Inner (
F3(911)
)
)
我的问题是,如果有人知道已存在的这些内容,或者如果没有,你觉得开始一个新项目是否值得?
答案 0 :(得分:14)
我目前正与我的导师Viktor Klang合作开发Scala Protocol Buffers编译器。这是我的Google Summer of Code项目,您可以在https://github.com/SandroGrzicic/ScalaBuff关注github上的进展。
[更新]主要部分是完整的;我仍然需要实现Extensions,Groups和field Options支持。它是可用的,我邀请每个人尝试并提供反馈;我愿意接受建议和功能要求。
答案 1 :(得分:1)
这个项目使用Simple-Build-Tool插件来实现这种效果:http://github.com/codahale/protobuf-sbt?locale=sv
<强>更新强> 上述项目已不复存在。 sbt-protobuf插件扩展了原始项目的功能。但请注意,sbt-protobuf生成Java类,而不是Scala。
答案 2 :(得分:1)
我刚刚碰到过这些,但不能担保,因为我从未使用它们。
答案 3 :(得分:1)
从.proto文件生成Scala和Java类的一个非常好的工具是ScalaPB。该工具扩展了sbt-protobuf插件的功能。
答案 4 :(得分:0)
也许有可能编写一个读取和编译.proto文件的Scala编译器插件?