def render(self, ast_or_filename, output_dir='', inject_dict=None, validation=True): if isinstance(ast_or_filename, string_types): ast = self.load_ast(ast_or_filename, inject_dict=inject_dict, validation=validation) else: ast = ast_or_filename assert isinstance(ast, AstNode) ast.inject(inject_dict) ast.validate() self.renderer = Renderer(self.loader, output_dir=output_dir, code_path=self.code_path, concept_path=self.concept_path, template_path=self.template_path) rendered_code = self.renderer.render_ast(ast) return rendered_code
def test_render_local(): # create a new offline loader with explicit github url to local directory association res_dir = os.path.join(dirname(__file__), '..', 'res', 'ast_test') loader = Loader() manifest = { 'title': 'adder', 'code_path': [os.path.join(res_dir, 'code')], 'concept_path': [os.path.join(res_dir, 'concepts')], 'template_path': [os.path.join(res_dir, 'templates')] } ast_node = AstNode(file_name='prg', loader=loader, **manifest) renderer = Renderer(loader, **manifest) rendered_code = renderer.render_ast(ast_node) assert rendered_code == '1 + 2 + 3' rendered_code = renderer.render_file('prg') assert rendered_code == '1 + 2 + 3'