def _load_ptl(name, filename, file=None): if not file: try: file = open(filename, "rb") except IOError: return None path, ext = os.path.splitext(filename) pyc_filename = path + ".pyc" module = _load_pyc(name, filename, pyc_filename) if module is not None: return module try: output = open(pyc_filename, "wb") except IOError: output = None try: code = compile_template(file, filename, output) except: if output: output.close() os.unlink(pyc_filename) raise else: if output: output.close() return _exec_module_code(code, name, filename)
def run_ptl(*source): """ Compile the given lines of source code using the ptl compiler and run the resulting compiled code. """ # When the ptl compiler compiles a module, it places _q_TemplateIO # and _q_htmltext into the globals of the module. Here, we don't # have a module, but we provide these same globals for eval. eval(compile_template(StringIO('\n'.join(source)), 'test'), dict(_q_TemplateIO=TemplateIO, _q_htmltext=htmltext))
#!/usr/bin/env python import sys from quixote.ptl.ptl_compile import compile_template if __name__ == '__main__': exec compile_template(open(sys.argv[1]), sys.argv[1])