ST4

2017-08-14 8 views
1

に空の文字列をフィルタリングは、次の例を考えてみましょう:ST4

<["foo", "", "bar"]; separator=","> 

これは結果を与える:

foo,,bar 

しかし、私は必要があります。

foo,bar 

は、フィルタリングする方法はあります区切り文字で整形する前に空の文字列値をST4に出力しますか?

実際のコードでは値は<if>の条件であり、モデルからの望ましくないデータの空の結果を返す別のテンプレートの値であり、テンプレートをカプセル化/分離した状態に保つためにそのテンプレートから条件を移動する必要はありません。 )

答えて

1

私は2つの補助的なもので回避策を見つけました。しかし、それはとても不気味です...

DropEmpty ::= ["": [], default: key] 

Separated(l, s, w=false) ::= "<if (DropEmpty.(first(l)))><if (w)><s><endif><first(l)><Separated(rest(l), s, true)><else><if (rest(l))><Separated(rest(l), s, w)><endif><endif>" 

MyTemplate() ::= << 
<Separated(["", "foo", "", "bar", "", "", "goo", "", ""], ",")> 
>> 

これが与える:

foo,bar,goo 
+0

をおそらく、新しいバージョンで変更されSMTHが、マッピングに[]持つことは今は不適切です。 DropEmptyを次のものに置き換えてくれました。 ["":false、default:key] –