template engine agnostic template compiler