quadro template C ++ HTML, templatizing biblioteca, gerador de HTML

votos
60

Estou à procura de bibliotecas template / gerador para C ++ que são semelhantes aos eg. Ruby Erb, Haml, Smarty do PHP, etc.

Seria ótimo se eu seria desporto algumas características básicas, como loops, if / else, conversão de int para cordas, etc.

Passagem de parâmetros para modelo de motor de renderização também é importante se eu poderia passar todos eles em um mapa de hash em vez de chamar alguma função para cada um dos parâmetros.

você tem alguma recomendação?

Eu posso ver também a possibilidade de incorporar linguagens como Lua, no entanto eu não encontrei uma biblioteca templatizing para o que quer.

Publicado 10/12/2008 em 11:41
fonte usuário
Em outras línguas...                            


12 respostas

votos
49

Uma rápida revisão do projeto mencionado.

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

ClearSilver

Teng

Templatizer

  • Site: http://www.lazarusid.com/libtemplate.shtml
  • Projeto: download apenas
  • Grupo: nenhum
  • Licença: livre para usar
  • Idioma: C (nível baixo) / C ++ (interface) misturado
  • Última Atualização: desconhecido
  • Última edição: desconhecido
  • Documento: nenhum
  • Comunidade: nenhum

HTML Template C ++

CTPP

  • Site: http://ctpp.havoc.ru/en/
  • Projeto: download apenas
  • Grupo: nenhum
  • Licença: Licença BSD
  • Idioma: C ++ com C API
  • Última Atualização: 05 de outubro de 2011
  • Última edição: Versão 2.7.2 em 5 Out 2011
  • Documento: Rico
  • Comunidade: nenhum

em peso

Flate

  • Site: http://flate.dead-inside.org/
  • Projeto: nenhum
  • Grupo: nenhum
  • Licença: v2.1 LGPL
  • Idioma: C
  • Última Atualização: 04 de setembro de 2010
  • Última edição: 2.0 em 04 de setembro de 2010
  • Documento: Pobre
  • Comunidade: nenhum
Respondeu 05/01/2009 em 13:35
fonte usuário

votos
6

NLTemplate é um C ++ biblioteca de modelos pequenos com sintaxe semelhante ao Django.

  • substituição variável
  • blocos repetíveis ou opcionais
  • O arquivo inclui
  • MIT licenciado
  • Sem dependências externas
  • arquivo de fonte única, fácil de adicionar a qualquer projeto

Disclaimer: Eu sou o autor.

Respondeu 07/04/2013 em 20:38
fonte usuário

votos
6

Grantlee é um modelo de motor corda com base no sistema de modelo Django. É portado para C ++ / Qt.

Respondeu 03/03/2010 em 14:58
fonte usuário

votos
3

CTPP é uma biblioteca muito rápido e poderoso escrito em C ++. Tem ligações para Perl, PHP e Python.

Respondeu 02/04/2009 em 12:20
fonte usuário

votos
3

Em peso (pronuncia-se 'inteligente') é um servidor de biblioteca C ++ e aplicação para desenvolver e implementar aplicações web. Não é um 'quadro', que impõe uma forma de programação, mas uma biblioteca.

Respondeu 11/02/2009 em 18:26
fonte usuário

votos
2

do facebook formato :

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"
Respondeu 23/03/2013 em 22:28
fonte usuário

votos
2

ClearSilver está disponível para c. Aqui está uma lista de sites existentes que usam Clearsilver. Mas eu não usá-lo eu mesmo.

Respondeu 10/12/2008 em 12:17
fonte usuário

votos
1

De alguma forma eu perdi NLTemplate quando eu estava procurando inicialmente, e escrevi o meu próprio C ++ templates motor, com aparentemente um caso de uso semelhante como NLTemplate :-)

https://github.com/hughperkins/Jinja2CppLight

  • Jinja2-como sintaxe
  • leve, sem dependências no impulso, qt, etc, ...
  • substituição de variáveis
  • loops
    • incluindo nested loops :-)
Respondeu 20/02/2015 em 09:21
fonte usuário

votos
1

ctemplate

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

Nova licença BSD

Respondeu 21/06/2012 em 14:03
fonte usuário

votos
1

Eu tentei usar motor de modelo e Páginas C ++ dinâmicos fornecidos pela estrutura ffead-CPP, uma aplicação exemplo é mostrado na wiki

Respondeu 01/06/2011 em 05:28
fonte usuário

votos
0

Templtext é uma biblioteca de processamento de modelo de texto pequeno C ++. Ele suporta variáveis de bash-like (% VAR ou% {VAR}). Mas a principal característica é um suporte de funções definidas pelo usuário . A biblioteca foi criada por mim.

  • parsing modelo
  • substituição variável
  • funções definidas pelo usuário no modelo
  • C ++ 11
  • licença GPL

precisa IMPULSIONAR biblioteca regex, mas será substituído por std :: regex na próxima versão

Exemplo 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;

Saída:

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.

Exemplo 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;

Saída:

You have got an apple.
You have got an orange.
English version - apple.
German version  - Apfel.
Flexible version - apple.
Flexible version - Apfel.
Respondeu 09/08/2015 em 22:33
fonte usuário

votos
0

Eu desenvolvi algo aqui modelado após jade para c ++. É preciso um idioma de entrada simples, mas poderosa e cria um único ++ função de modelo c que escreve HTML para um riacho.

< html
  < h1 The title is ${{ params["title"] }}& >
    < ul >
    & for(int i = 0; i < boost::get<int>(params["items"]); ++i) {
      < li Item $` i `$ >
    & }
>
  • substituição variável
  • blocos de códigos definidos pelo usuário
  • colheitas de energia cheio de c ++ (loops, declarações de variáveis, o nome dele)
  • Super fácil de integrar em fonte constrói
  • Todo o possível feito em tempo de compilação
  • Nenhuma formato intermediário (linear C ++)
  • Fácil de debug (porque c ++ saída)
  • Sem dependências externas
  • Super pequena inferior a 600 linhas de c ++
  • licença GPL
Respondeu 16/05/2015 em 23:23
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more