mstch is a complete implementation of {{mustache}} templates using modern C++
Find a file
2015-04-24 12:29:58 +02:00
include/mstch full lambda support 2015-04-23 15:55:18 +02:00
src cmake install 2015-04-24 01:48:42 +02:00
test reformat 2015-04-24 11:54:21 +02:00
.gitignore moved to lambda tests 2015-04-12 17:12:52 +02:00
.travis.yml use gcc 4.9 2015-04-22 12:35:34 +02:00
CMakeLists.txt reformat 2015-04-23 12:54:08 +02:00
LICENSE Initial commit 2015-04-09 20:14:44 +02:00
README.md smaller logo 2015-04-24 12:29:58 +02:00

mstch - {{mustache}} templates in C++11

mstch logo

mstch is a complete implementation of {{mustache}} templates using modern C++.

Build Status

Supported features

mstch supports the complete feature set described in the mustache(5) manpage:

  • JSON-like data structure using Boost.Variant
  • variables, sections, inverted sections
  • partials
  • changing the delimiter
  • C++11 lambdas
  • C++ objects as view models

Basic usage

#include <iostream>
#include <mstch/mstch.hpp>

int main() {
  std::string view{"{{#names}}Hi {{name}}!\n{{/names}}"};
  mstch::map context{
    {"names", mstch::array{
      mstch::map{{"name", std::string{"Chris"}}},
      mstch::map{{"name", std::string{"Mark"}}},
      mstch::map{{"name", std::string{"Scott"}}},
    }}
  };
  
  std::cout << mstch::render(view, context) << std::endl;
  
  return 0;
}

The output of this example will be:

Hi Chris!
Hi Mark!
Hi Scott!

Requirements

  • A C++ compiler with decent C++11 support. Currently only tested with GCC 4.9.
  • Boost 1.54
  • CMake for building

Installing

From the root of the source tree:

 $ mkdir build
 $ cd build
 $ cmake ..
 $ make
 $ make install

Running the unit tests

 $ mkdir build
 $ cd build
 $ cmake -DWITH_UNIT_TESTS=ON ..
 $ make
 $ make test

Advanced usage

TODO