Картинка блога

И так, я рассказал об основных приемах использования StringTemplate. В качестве завершения, хочу остановится на работе со словарем, условиями и циклами в шаблонах. Для начала, нужно запомнить таблицу разрешения имен:

Поиск значения переменных

Предусмотрен следующий порядок получения параметров:

  1. C# свойство (т.е. неиндексированных CLR Property) с именем name
  2. Метод под названием get_name ()
  3. Метод под названием GetName ()
  4. Метод под названием Isname ()
  5. Метод под названием GetName ()
  6. Метод под названием isname ()
  7. Поле (field) с именем name
  8. C # индексатор (например, CLR indexed property), которая принимает единственный параметр строка — это [«name»]

Так как таблица большая, это дает некоторые удобства в использовании, но значительно замедляет парсинг. По этому, всегда предусматривайте кеширование.

Доступ к элементам словаря

Все довольно просто со списками и «итерируемыми» элементами:

$list:{key|<div>$key.Title$</div>}$

А вот итерация по словарю, может показаться не такой уж элементарной (по крайне мере, я искал решение в интернете). Трюк заключается в использовании итератора Keys:

$dict.keys:{k| <div>$k$ - ($dict.(k)$)</div>}$

Операторы списков

Не знаю, как назвать этот раздел. Речь пойдет о методах списка (часттично LINQ — хотя не уверен) типа Count, First, Last и тд. Обычный доступ к методу Count просто выкинет ошибку, чтобы получить количество элементов предусмотрен одноименный оператор length, а вызов выглядит так:

$length(list)$

Заключение

Надеюсь, эти три части будут хорошим началом для изучения StringTemplate. Нетронутыми осталось еще несколько частей:

  • Отладка (StringTemplateTreeView).
  • Изменение лексеров — использование тэгов, вместо знака ‘$’ (AngleBracketLexer).
  • Фильтры завершения — упаковка, форматирование (StringTemplateTreeView).
  • Пользовательское отображение объектов (IAttributeRenderer)и формат.

Метки:, ,