2015-11-06 83 views
0

生成Scala的來源,我知道play-twirl用於生成包含可在運行時調用模板函數斯卡拉來源。從捻模板

有沒有辦法用播放旋轉生成任意Scala源文件?

例如
我想通過創建像

的src /主/捻模板以自動化一些繁瑣的方法簽名的創建/ Foos.scala.scala

object Foos { 
    @for(i <- 2 to 22){ 
    def [email protected][@(...)](chain: @(...)) = @(...) 
    } 
} 

並且有一個由SBT生成的源文件,如

src_managed/main/scala/Fo os.scala

object Foos { 
    def foo2[A1, A2](chain: A1 ~ A2) = chain match { case a1 ~ a2 => (a1, a2) } 
    def foo3[A1, A2, A3](chain: A1 ~ A2 ~ A3) = ... 
    .... 
    def foo22[A1, ..., A22] .... 
} 

基於some of the Playframework library sources,它看起來像他們正在用自己的模板框架做同樣的事情,但它似乎沒有自動化。

因此,重申這個問題,這種類型的設置可能與旋轉?有沒有其他的sbt插件可以讓這種事情變得更簡單?

回答

0

因爲寫了我自己的SBT邏輯,Twirl似乎無法做我想找的東西。

我發現在sbt-boilerplate一個有用的選擇。使用該插件,我可以完成我正在尋找的內容。

的src /主/樣板/ Foos.scala.template

object Foos { 
    [2..22#def foo1[[#A1#]](chain: [#A1# ~ ]) = chain match { case [#a1# ~ ] => ([#a1#]) } 
    #] 
} 

膨脹出到

目標/階-2.xx的/ src_managed /主/ Foos.scala

object Foos { 
    def foo2[A1, A2](chain: A1 ~ A2) = chain match { case a1 ~ a2 => (a1, a2) } 
    def foo3[A1, A2, A3] ... 
    ... 
    def foo22[A1, ..., A22] ... 
}