BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

Rubyと.NETの安全なユーザー生成テンプレート

| 作者: Jonathan Allen フォローする 655 人のフォロワー , 翻訳者 尾崎 義尚 フォローする 0 人のフォロワー 投稿日 2011年12月11日. 推定読書時間: 1 分 |

原文(投稿日:2011/12/06)へのリンク

ユーザーに多くの権限を与えることにフォーカスしている他のテンプレートエンジンとは違い、Liquidはユーザーができることを制限するように設計されている。ゴールは、サーバーのセキュリティを悪化させることなく、エンドユーザーが彼ら自身のテンプレートを作ることができるようにすることである。

Liquidはもともと、eCommerceプラットフォームであるShopifyとして作られ、2006年から製品利用されている。Tim Jones氏は、このエンジンをDotLiquidという名前で.NETに移植した。どちらのバージョンも、テンプレート以下のプラットフォームにアクセスすることができず安全である。その代わりに、“フィルタ”と呼ばれる主に単純な関数に制限された命令セットと条件ステートメントを利用する。Liquidマークアップシンタックスは、どちらのバージョンも同じだ。

描画テンプレートには、2つのステップがある。最初は、ソースコードが再利用可能なテンプレートオブジェクトにパースされる。そして、必要に応じてテンプレートの描画メソッドが呼ばれる。テンプレートは、Ruby/.NETの変数にはアクセスできず、キー/バリューペアのディクショナリを利用して渡す必要がある。

開発者は、彼らのユーザーが利用するフィルタを開発することができる。新しいフィルタの公開は、特定のテンプレートのみでも、登録して全体でも可能である。いずれにしろ、関数の本質は、受け付けて、文字列を返すことである。新しいタグは少々複雑で、初期化と描画フェーズの両方が必要である。幸運なことに、最も面倒な部分は、ベースクラスを呼び出すことで処理することができる。

Jürgen Bäurle氏は、さらに進めて、SharePointに特化したDotLiquid拡張の作り方を提示している。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT