You provide any text document with embedded fragments of Python, and Cog renders it:
using namespace std; #include <iostream> int main() { cout << "Hello Earth." << endl; /*[[[cog print("""\ cout << "Hello Mars." << endl; printf("Goodbye Pluto.\\n"); """) ]]]*/ //[[[end]]] return 0; }
Notice that newlines have to be escaped.
Translate:
$ cog.py hello_world.cpp.cog > hello_world.cpp
Output:
using namespace std; #include <iostream> int main() { cout << "Hello Earth." << endl; /*[[[cog print("""\ cout << "Hello Mars." << endl; printf("Goodbye Pluto.\\n"); """) ]]]*/ cout << "Hello Mars." << endl; printf("Goodbye Pluto.\n"); //[[[end]]] return 0; }
General build and run:
$ g++ -o hello_world hello_world.cpp $ ./hello_world Hello Earth. Hello Mars. Goodbye Pluto.