private ConverterInfo AddComplexBindingConverter (MatchCollection mSubs, string strBinding, int termPos)
{
var sbExpr = new StringBuilder(mSubs[0].Result("$`"));
var conv = new ConverterInfo {
Name = string.Format(CultureInfo.InvariantCulture, "_jaml_{0}Converter", ClassName),
SubBindings = new List<string>(),
};
for (int i = 0; i < mSubs.Count; ++i) {
string strBetween = GetStringBetweenCaptures(mSubs[i], i + 1 < mSubs.Count ? mSubs[i + 1] : null,
strBinding, termPos);
sbExpr.AppendFormat(CultureInfo.InvariantCulture, "(values[{0}]){1}", i, strBetween);
string strSub = mSubs[i].Groups["SubBinding"].Value;
conv.SubBindings.Add(
FormatScalarPropertyValue(FormatSimpleBindingValue(strSub) ?? strSub));
}
conv.Expression = sbExpr.ToString().Trim();
EnsureConverterNameUnique(conv);
Converters.Add(conv);
return conv;
}