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.