Подскажите шаблонизатор для Java
(такой который очень легко вызвать из Java и не боясться что в следующей версии все сломается - привет основанным на clojure движкам, которые якобы легко вызываются из java, а на самом деле ты первые шесть часов бьясь об стенку пытаешься сконвертить Map<String,Object> с переменными контекста в какую-то негуманоидную кложуровскую структуру через криворукие коннекторы между джавой и кложуром. И который через неделю меняется, и надо повторять страдания. То же про скалу.)
Должен форматировать произвольный текст в произвольном синтаксисе (привет, thymeleaf, который в JSON научился только в 3beta). Не надо никакой заточки под формат, потому что кромсаться будет и XML, и JSON, и вообще произвольный текст.
Должен уметь в простые плейсхолдеры типа «блаблаблафигня${myVariable}блаблаблафигня»
Должен без приседаний и плясок с бубнами (привет jsp) транслировать String (исходник) + Map<String,Object>(переменные контекста) -> String (результат).
То есть никакой параши с интеграцией со спрингом, сервлет-контейнером и прочим, никакого стейта (ну разве что указать темповый каталог для хранения предкомпилированных шаблонов - с возможностью не указывать), никаких прибитых гвоздями биндингов к Спрингу и JSFу, никаких предположений о версии servlet-api и других таких вещей. Если сильно захочется прибить его куда-то гвоздями, я сам прибью за 10 минут, дурное дело нехитрое.
Должен уметь человеко-удобный синтаксис (ифы, форы, свичи, вызов внешнего кода, определение переменных итп - хотя бы на уровне jstl).
Чем меньше в этом синтаксисе будет XMLя тем лучше, имхо. Никаких вот этих, чтобы нарисовать XML тэг определите еще десять XML тэгов, у которых с помощью XML определите аттрибуты, выражающиеся через XML-вставки. Ехал XML через XML, да ну его в жопу.
Очень желательно иметь возможность расширять синтаксис (свои тэги, например) и иметь фрагменты (прямо в шаблоне определять подшаблоны).
Очень желательно было бы наличие прозрачного парсинга (типа Microsoft Razor):
иначе говоря, вот так плохо:
<ul id=products>
<% foreach item in products { %>
<li><%= item.name =%></li
<% } %>
</ul>
а вот так хорошо:
<ul id=products>
@foreach item in products {
<li>@item.name</li>
}
</ul>