StringTemplate C# еще, если ошибка?
Я использую StringTemplate версии 3.
У меня есть следующий шаблон:
<html>
<head>
<title>Test</title>
<style>
.done-ok {
background-color : LawnGreen
}
.done-ignore {
background-color : Orange
}
.done-fail {
background-color : OrangeRed
}
</style>
</head>
<body class="$if(failedNonEmpty)$done-fail$elseif(needsAttentionNonEmpty)$done-ignore$else$done-ok$endif$">
</body>
</html>
Я использую следующий код:
var stg = new StringTemplateGroup(templateName, new FileSystemTemplateLoader(Path.Combine(locationRoot, templateFolder)));
var st = stg.GetInstanceOf(templateName);
st.SetAttribute("passedNonEmpty", !true);
st.SetAttribute("failedNonEmpty", !true);
st.SetAttribute("needsAttentionNonEmpty", !true);
var content = st.ToString();
Когда я компилирую код, все в порядке. Странная вещь, когда я меняю второй атрибут на:
st.SetAttribute("failedNonEmpty", true);
Затем неожиданно я получаю исключение в строке st.ToString(), говорящее: нет текста в шаблоне 'elseif'
У кого-то есть такие же проблемы или есть решение?
1 ответ
Решение
Насколько я помню, в ST3 нет elseif (и это действительно боль в заднице). ST4 имеет это все же.
Редактировать:
На самом деле elseif был добавлен в 3.1 (не уверен, работает ли он)
источник: https://theantlrguy.atlassian.net/wiki/display/ST/3.1+Release+Notes