Short filter module for Play2!をリリースしました


Play framework 2.0 で、Play各種テキストフィルターやエスケープなどの処理を簡単に記述できるPlayテンプレートタグ系のプラグイン「Short filter module for Play2!」をリリースしました。

というか、リリースしましたなんていうのもおこがましいプラグインなのですが、、、。

たぶん世界最小のPlayプラグインだと思います(笑

そもそもの話

元々、これはPlayの中の人であるErwanさんの飲み会の時に、相談したもので、現状Scalaテンプレート内で「{」や「}」を使用する場合は、必ず対にするという必要があります。

「{}」部分は、テンプレートシンタックスでない部分もパースされてしまっているため、対でないと怒られるというわけです。

そこで、例えば「@{」とか「@}」みたいに書けると結構嬉しいという話をしました。が、僕自身はすぐにでもこれを使いたいので、どうやって実装していいかいろいろ探りました。

1つは、play.api.templates.ScalaTemplates.scala をいじる方法。
これは、頑張ってソースを読み解いていったのですが、具体的にどう改善していいかよくわかりませんでした(笑

そこで、別の方法としていくつかの実装を考えてみたのですが、結局落ち着いたのは、@format.raw(“STRING”)の短縮版でいいんではないかという結論です。

導入と使い方

導入方法は、Playプロジェクト内のproject/Build.scalaに

val appDependencies = Seq(
  "jp.greative" % "play2-short-filtr_2.9.1" % "0.1"
)

val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
  resolvers += "Greative Repository" at "https://github.com/karad/maven-repo/raw/master/release/"
)

と書いて、プラグインを組み込みます。

文法は、

@r("{や}などのエスケープしたい文字")

しか今のところはありません(笑

Scalaテンプレート内で、例えば

@import tags._

@main() {
   
    @r("{")
        OUTPUT
    @r("}")

}

のように記述すると、

{
    OUTPUT
}

と出力されます。

それだけのプラグインです:笑)

あ、でも、いろいろ今後タグを増やしていく予定ですよ!

今回は、タグ型のプラグインの配布練習みたいなことも兼ねてます。
コンソール型のプラグインに比べたら遥かに簡単に作成でき、すぐ配布できますね。

Comments are closed.