l'essentiel est invisible pour les yeux

Tuesday, March 03, 2009

[Scala] ScalaベースのテンプレートエンジンDreadLocks 0.1をリリース

DreadLocks - Scalaベースのテンプレートエンジン

Scalaのテンプレートエンジンを探していたけど見つからなかったので、DreadLocksテンプレートエンジンを実装しました。現在は、基本的なScalaの構文のみサポートしています。完全なScalaプログラムのサポートと高速化が次のリリースの目標としています(foreachやif文は実装済み)。ソースコードは、GitHub dreadlocks/trunkで、今後のマイルストーンとロードマップは、TwitterGoogle Groupsで確認できるので、よければどうぞ。

簡単なサンプルコードは、以下の通り。

hamburgers.txt:
Delicious hamburger restraunts in Japan:
<?sc restraunts.foreach { restraunt => ?>
* ${restraunt}
<?sc } ?>

Side menus:
<?sc if(haveSideMenu) { ?>
* ${sideMenus("potato")}
* ${sideMenus("coleslaw")}
<?sc } ?>

Hamburgers.scala
import org.scalalites.dreadlocks._
// You can specify instance of java.io.File, scala.io.Source or String to constructor of Template class.
val source = Source.fromFile("template_variable.shtml")
val template = Template(source)
val context = Context("restraunts" -> List("Baker Bounce", "Great Burger", "FELLOWS"),
"haveSideMenu" -> true,
"sideMenus" -> HashMap("potato" -> "French fries", "coleslaw" -> "Coleslaw"))

val output = template.render(context)
// Console.println(output)
// Delicious hamburger restraunts in Japan:
// * Baker Bounce
// * Great Burger
// * FELLOWS
//
// Side menus:
// * French fries
// * Coleslaw


高速化と完全なScala構文のサポートを引き続き目指します。

Released DreadLocks-0.1 template engine for Scala programmers (in english)