blob: f33dd243c50ec98f07ca97d851a37e49ea327f98 [file] [log] [blame]
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os.path
from . import code_node
from .clang_format import clang_format
from .mako_renderer import MakoRenderer
def run_example(web_idl_database, output_dirs):
renderer = MakoRenderer()
filename = 'v8_example.cc'
filepath = os.path.join(output_dirs['core'], filename)
root_node = code_node.SequenceNode(renderer=renderer)
root_node.extend([
code_node.SimpleNode(template_text="${z} = ${x} + ${y};"),
code_node.SimpleNode(template_text="print ${z};"),
])
def make_symbol(name, template_text):
def constructor(symbol_node):
return code_node.SymbolDefinitionNode(
symbol_node, template_text=template_text)
return code_node.SymbolNode(
name=name, definition_node_constructor=constructor)
root_node.add_template_vars({
'x': make_symbol('x', "int ${x} = 1;"),
'y': make_symbol('y', "int ${y} = 2;"),
'z': make_symbol('z', "int ${z};"),
})
prev = ''
current = str(root_node)
while current != prev:
prev = current
current = str(root_node)
rendered_text = current
format_result = clang_format(rendered_text, filename=filename)
with open(filepath, 'w') as output_file:
output_file.write(format_result.contents)