C ++ HTML-шаблон, библиотека шаблонов, библиотека генератора HTML [закрыто]

Я ищу библиотеки шаблонов / генераторов для C ++, которые похожи, например, на. Ruby's Erb, Haml, PHP Smarty и др.

Было бы здорово, если бы я использовал некоторые базовые функции, такие как циклы, if / else, преобразование int в строки и т. Д.

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

У вас есть какие-нибудь рекомендации?

Я также вижу возможность встраивания таких языков, как Lua, однако я не нашел шаблонной библиотеки для этого.

10.12.2008 10:41:54
слишком много устаревших, не обновленных или неработающих ссылок.
gbjbaanb 2.06.2016 08:58:36
Первый ответ - вики сообщества, вы можете обновить его.
Marcin Gil 2.06.2016 09:09:09
13 ОТВЕТОВ

ClearSilver доступен для c. Вот список существующих сайтов, которые используют clearsilver. Но я не использую это сам.

2
10.12.2008 11:17:55
РЕШЕНИЕ

Краткий обзор упомянутого проекта.

http://rgrz.tumblr.com/post/13808947359/review-of-html-template-engines-in-c-language

ClearSilver

Тэн

Templatizer

  • Сайт: http://www.lazarusid.com/libtemplate.shtml
  • Проект: только для скачивания
  • Группа: нет
  • Лицензия: бесплатно использовать
  • Язык: C (низкий уровень) / C ++ (интерфейс) смешанный
  • Последнее обновление: неизвестно
  • Последний выпуск: неизвестен
  • Документ: нет
  • Сообщество: нет

HTML шаблон C ++

СТРР

  • Сайт: http://ctpp.havoc.ru/en/
  • Проект: только для скачивания
  • Группа: нет
  • Лицензия: Лицензия BSD
  • Язык: C ++ с C API
  • Последнее обновление: 5 октября 2011 г.
  • Последний выпуск: версия 2.7.2 5 октября 2011 г.
  • Документ: Богатый
  • Сообщество: нет

вес

Flate

  • Сайт: http://flate.dead-inside.org/
  • Проект: нет
  • Группа: нет
  • Лицензия: LGPL v2.1
  • Язык: C
  • Последнее обновление: 4 сентября 2010 г.
  • Последний выпуск: 2.0 4 сентября 2010 г.
  • Документ: плохой
  • Сообщество: нет

Jinja2C ++

52
2.10.2019 07:48:13

Wt (произносится как «остроумный») - это библиотека C ++ и сервер приложений для разработки и развертывания веб-приложений. Это не «фреймворк», который реализует способ программирования, а библиотека.

3
11.02.2009 17:26:43
Однако стоит помнить, что я искал способ встраивания шаблонизирующих функций HTML в настольную программу C ++.
Marcin Gil 13.02.2009 11:52:25
Я бы определенно назвал это основой. Он даже генерирует код JavaScript. См. Webtoolkit.eu/wt/src/hello
Janus Troelsen 3.11.2012 11:09:12

CTPP - это очень быстрая и мощная библиотека, написанная на C ++. У него есть привязки для Perl, PHP и Python.

3
13.04.2010 16:32:06
Документация устарела, и кажется, что развитие застопорилось
Mark Stahler 14.11.2013 20:31:29

Grantlee - это механизм шаблонов строк, основанный на системе шаблонов Django. Он портирован на C ++ / Qt.

7
6.06.2016 09:13:33
@gbjbaanb: я обновил URL-адрес до нового местоположения.
Kristian 6.06.2016 09:14:06

Я попытался использовать шаблонизатор и динамические страницы C ++, предоставляемые инфраструктурой ffead-cpp, пример реализации показан в вики

1
1.06.2011 04:28:24

ctemplate

https://code.google.com/p/ctemplate/?redir=1

Новая лицензия BSD

1
21.06.2012 13:03:21

формат фейсбука :

std::cout << format("The answers are {} and {}", 23, 42); 
// => "The answers are 23 and 42"

std::map<std::string, std::string> m { {"what", "answer"}, {"value", "42"} }; 
std::cout << vformat("The only {what} is {value}", m); 
// => "The only answer is 42"
2
23.03.2013 21:28:06

NLTemplate - это небольшая библиотека шаблонов C ++ с синтаксисом, похожим на Django.

  • Переменная замена
  • Повторяемые или дополнительные блоки
  • Файл включает в себя
  • MIT лицензирован
  • Нет внешних зависимостей
  • Единый исходный файл, который легко добавить в любой проект

Отказ от ответственности: я автор.

6
29.12.2019 22:07:12
Работал довольно хорошо для меня. Спасибо, что поделился!
Deep Shah 15.07.2016 09:18:29
Как это для того, чтобы быть одним файлом. Это немного устарело, хотя последний коммит был 2 года назад.
Victor Sergienko 20.01.2017 21:10:42
NLTemplate довольно хорош, спасибо CatNapGames! Было несколько вещей, которые мне не нравились (бросать строки вместо исключений, отсутствие ссылок на блоки нулевого типа), поэтому я написал нечто подобное. github.com/michaelainsworth/StringTemplate
magnus 22.01.2018 21:04:19
Вышеуказанная ссылка кажется мертвой.
Jaideep Shekhar 27.12.2019 15:32:12

Каким-то образом я пропустил NLTemplate, когда искал изначально, и написал свой собственный шаблонизатор C ++ с явно похожим вариантом использования, как NLTemplate :-)

https://github.com/hughperkins/Jinja2CppLight

  • Jinja2-подобный синтаксис
  • легкий, без зависимостей от boost, qt и т. д., ...
  • подстановка переменных
  • для петель
    • в том числе вложенные для циклов :-)
1
20.02.2015 09:21:01
Кстати, я также сделал другой шаблон, основанный на встроенном движке lua. Я думаю, что версия lua довольно крутая, так как lua ​​крошечная и быстрая, и тогда вся мощь lua находится в нашем распоряжении в шаблонах github.com/hughperkins/luacpptemplater
Hugh Perkins 2.06.2016 12:41:31
Это не работает вообще. Даже примеры в README.
makerj 11.04.2017 08:59:57

Я разработал что-то здесь по образцу Jade для C ++. Он использует простой, но мощный язык ввода и создает одну шаблонную функцию c ++, которая записывает HTML в поток.

< html
  < h1 The title is ${{ params["title"] }}& >
    < ul >
    & for(int i = 0; i < boost::get<int>(params["items"]); ++i) {
      < li Item ${{ i }}$ >
    & }
>
  • Переменная замена
  • Пользовательские блоки кода
  • использует всю мощь c ++ (циклы, объявления переменных, вы называете это)
  • Супер легко интегрировать в исходные сборки
  • Все возможное сделано во время компиляции
  • Нет промежуточного формата (прямой C ++)
  • Легко отлаживать (потому что вывод c ++)
  • Нет внешних зависимостей
  • Супер крошечный менее 600 строк с ++
  • Лицензия GPL
1
16.05.2015 23:23:32

Templtext - это небольшая библиотека для обработки текстовых шаблонов C ++. Он поддерживает переменные, похожие на bash (% VAR или% {VAR}). Но главной особенностью является поддержка пользовательских функций . Библиотека была создана мной.

  • Разбор шаблона
  • Переменная замена
  • Пользовательские функции в шаблоне
  • C ++ 11
  • Лицензия GPL

нужна библиотека регулярных выражений BOOST, но в следующей версии она будет заменена на std :: regex

Пример 1:

using namespace templtext;

Templ * t = new Templ( "Dear %SALUTATION %NAME. I would like to invite you for %TEXT. Sincerely yours, %MYNAME." );

std::map<std::string, std::string> tokens01 =
{
        { "SALUTATION", "Mr." },
        { "NAME", "John Doe" },
        { "TEXT", "an interview" },
        { "MYNAME", "Ty Coon" }
};

std::map<std::string, std::string> tokens02 =
{
        { "SALUTATION", "Sweetheart" },
        { "NAME", "Mary" },
        { "TEXT", "a cup of coffee" },
        { "MYNAME", "Bob" }
};

std::cout << t->format( tokens01 ) << std::endl;
std::cout << t->format( tokens02 ) << std::endl;

Вывод:

Dear Mr. John Doe. I would like to invite you for an interview. Sincerely yours, Ty Coon.
Dear Sweetheart Mary. I would like to invite you for a cup of coffee. Sincerely yours, Bob.

Пример 2:

using namespace templtext;

std::unique_ptr<Templ> tf1( new Templ( "You have got an $decode( 1 )." ) );
std::unique_ptr<Templ> tf2( new Templ( "You have got an $decode( 2 )." ) );
std::unique_ptr<Templ> tf3( new Templ( "English version - $decode_loc( 1, EN )." ) );
std::unique_ptr<Templ> tf4( new Templ( "German version  - $decode_loc( 1, DE )." ) );
std::unique_ptr<Templ> tf5( new Templ( "Flexible version - $decode_loc( 1, %LANG )." ) );

tf1->set_func_proc( func );
tf2->set_func_proc( func );
tf3->set_func_proc( func );
tf4->set_func_proc( func );
tf5->set_func_proc( func );

Templ::MapKeyValue map1 =
{
        { "LANG", "EN" }
};

Templ::MapKeyValue map2 =
{
        { "LANG", "DE" }
};

std::cout << tf1->format() << std::endl;
std::cout << tf2->format() << std::endl;
std::cout << tf3->format() << std::endl;
std::cout << tf4->format() << std::endl;
std::cout << tf5->format( map1 ) << std::endl;
std::cout << tf5->format( map2 ) << std::endl;

Вывод:

You have got an apple.
You have got an orange.
English version - apple.
German version  - Apfel.
Flexible version - apple.
Flexible version - Apfel.
0
9.08.2015 22:33:34

Jinja2C ++

Описание:

  • Библиотека C ++ 14/17
  • Поддерживает основные компиляторы (Visual C ++, GCC, Clang)
  • Простой в использовании интерфейс.
  • Соответствие спецификации Jinja2 http://jinja.pocoo.org/docs/2.10/
  • Поддержка как узких, так и широких символьных строк как для шаблонов, так и для параметров.
  • Встроенное отражение для типов C ++ и популярных библиотек json (nlohmann, RapidJson).
  • Пользовательские вызовы.
  • Мощные полнофункциональные выражения Jinja2 с фильтрацией (с помощью оператора '|') и выражений 'if'.
  • Большой набор тегов Jinja2 включает макросы и расширения шаблонов.
  • Богатые сообщения об ошибках.
1
2.10.2019 07:47:16