LINUX.ORG.RU

[C++/Qt] Есть ли аналог Perl'a HTML::Template?


0

1

Доброго всем!

Ищу способ для разделения логики, данных и визуального оформления при формировании файлов. В Perl с этим чудесно справлялся HTML::Template.

Вопрос знатокам: а какие инструменты для этого есть в C++/Qt?

Удачен ли выбор шаблона на основе html-тегов или есть более изящные и архитектурно более правильные решения?

Чем вы пользуетесь?

> Чем вы пользуетесь?

перлом ;)

зы: в кде 4.5 появились qt4/kde4 биндинги для перла.

arsi ★★★★★
()
Ответ на: комментарий от arsi

Спасибо, это весьма интересно. Но хочется нативных средств.

Chaser_Andrey ★★★★★
() автор топика
Ответ на: комментарий от archimag

Что-то его нет ни в репозитории Debian Squeeze, ни ебилдов. Как бы не охота поддерживать ещё и сторонний продукт... %)

Но спасибо, надо обратить внимание.

Chaser_Andrey ★★★★★
() автор топика
Ответ на: комментарий от Chaser_Andrey

>Что-то его нет ни в репозитории Debian Squeeze, ни ебилдов.

emerge -pv ctemplate
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] dev-cpp/ctemplate-0.99  USE="emacs -doc -static-libs -vim-syntax" 0 kB
archimag ★★★
()
Ответ на: комментарий от archimag

Мда... тупняк. Что ж, спасибо! Приступаем к изучению CTemplate.

Chaser_Andrey ★★★★★
() автор топика
Ответ на: комментарий от anonymous

> какой-то он не очень понятный. как его к cppcms прикрутить например?

CTemplate гугл юзал раньше для www.google.com, как сейчас не знаю. Я х.з. что такое cppcms, я C++ для веб последний раз 3 года назад юзал.

archimag ★★★
()
Ответ на: комментарий от archimag

у лисперов что не реализаци то свой вариант не совместимый с остальными ;-)

ок. я ошибся. CommonLisp! да?

hizel ★★★★★
()
Ответ на: комментарий от hizel

> у лисперов что не реализаци то свой вариант не совместимый

с остальными ;-)


Не более, чем не совместимы различные компиляторы того же С++.

> ок. я ошибся. CommonLisp! да?

Точно. Приз достаётся вам. Только правильно писать Common Lisp (с пробелом). Сокращённый вариант CL (а не clisp) ))

archimag ★★★
()

Держи, используй на здоровье
test.txt:

<html>
<head>
<title>{TITLE}</title>
</head>
<body>
<!-- BEGIN main_table --><table {TAB_STYLE}>  
  <!-- BEGIN table_line --><tr><td>{ONE}</td><td>{TWO}</td></tr><!-- END table_line -->
</table><!-- END main_table -->
</body>
</html>

template_demo.cpp:

#include <template.hpp>

int main()
{
  try {
    template_report r("test.txt");
    r.set_var("TITLE","Example of using template.cpp");
    r.begin_block("main_table");
      r.set_var("TAB_STYLE","'style=10px'");
      r.begin_block("table_line");
        r.set_var("ONE","10");    
        r.set_var("TWO","20");    
      r.end_block();
      r.begin_block("table_line");
        r.set_var("ONE","30");    
        r.set_var("TWO","40");    
      r.end_block();
    r.end_block();
    cout << r;
  }
  catch (template_report_exception &ex) {
      cout << "Error: " << ex.what() << endl;
  }

  return 0;
};

$ g++ -O2 -o template_demo template_demo.cpp template.cpp -I. -lboost_regex
$ ./template_demo 
<html>
<head>
<title>Example of using template.cpp</title>
</head>
<body>
<table 'style=10px'>  
  <tr><td>10</td><td>20</td></tr><tr><td>30</td><td>40</td></tr>
</table>
</body>
</html>
$ 

template.hpp: http://pastebin.com/jzZ06vLx
template.cpp: http://pastebin.com/VmL28wBh

bukaka
()
Ответ на: комментарий от bukaka

Благодарю! Это поможет мне сделать более полноценный аналог HTML::Template, с расширенной функциональностью.

//ЛОР - торт!

Chaser_Andrey ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.