예제 #1
0
    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
예제 #2
0
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'