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

Другие вопросы по тегам