StringTemplate C# elseif 错误?
StringTemplate C# elseif bug?
我使用 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'
有人遇到同样的问题或知道解决方案吗?
据我所知,ST3 中没有 elseif(这真的很让人头疼)。
不过ST4有。
编辑:
实际上elseif是在3.1中添加的(不确定是否有效)
来源:
https://theantlrguy.atlassian.net/wiki/display/ST/3.1+Release+Notes
我使用 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'
有人遇到同样的问题或知道解决方案吗?
据我所知,ST3 中没有 elseif(这真的很让人头疼)。 不过ST4有。
编辑:
实际上elseif是在3.1中添加的(不确定是否有效)
来源: https://theantlrguy.atlassian.net/wiki/display/ST/3.1+Release+Notes