2011-08-11 12 views
3

Template Toolkitで動的に生成されたリストにあるいくつかのアイテムをフィルタリングするにはどうすればよいですか? 私は(動的に生成された)idsのリストと除外するidsのリストを持っており、除外されていないidsだけを取得する必要があります。何をするのが最善の方法? サンプルコード:テンプレートツールキットを使用してリストからアイテムをフィルタリングする

[% SET ids = [1,2,4,10,11,12,13,17,19,20,21,50,51] %] 
[% SET id_excluded = [10,11,13,20,50] %] 
[% FOREACH pid IN ids %] 
    [% IF ?code to filter the ids? %] 
     [% pid %] 
    [% END %] 
[% END %] 
+2

なぜあなたはテンプレートにフィルタ処理内容を渡すいけませんか? –

+0

私は実際にこれをやっていますが、最初はテンプレートをフィルタリングしていましたが、Perlではスマートマッチ演算子(~~)を使って簡単に行うことができ、TTではそれが簡単ではないことに驚いていました。私は答えを求めようとしましたが、ここで尋ねられました。 – nsbm

+0

スマートマッチ演算子が導入されたときのTTの一般的なバージョン(2.x)は、perl 5.10より前です。一般的に、pre-smart-match perlでもgrep {}構造を使用しています。 – RET

答えて

3

例えば、リストのgrep VMethodをお試しください:

次を生成
[% SET ids = [1,2,4,10,11,12,13,17,19,20,21,50,51] %] 
[% SET id_excluded = [10,11,13,20,50] %] 
[% FOREACH pid IN ids %] 
    [% UNLESS id_excluded.grep("^$pid\$").size %] 
     [% pid %] 
    [% END %] 
[% END %] 

1 2 4 12 17 19 21 51 
関連する問題