def generate(project): _entries = [ (".project", "eclipse.project.template"), (".cproject", "eclipse.cproject.template"), ] for entry in _entries: outfilepath = os.path.join(project.outdirpath, entry[0]) infilepath = os.path.join(os.path.dirname(__file__), entry[1]) logging.info("%s: generating '%s'", project.name, outfilepath) template.expand(infilepath, outfilepath, _TemplateHandler(project))
def generate(project): _entries = [ (project.name + ".files", _gen_project_files), (project.name + ".includes", _gen_project_includes), (project.name + ".config", _gen_project_config), (project.name + ".creator", _gen_project_creator), (project.name + ".creator.shared", "qtcreator.creator.shared.template"), ] for entry in _entries: outfilepath = os.path.join(project.outdirpath, entry[0]) logging.info("%s: generating '%s'", project.name, outfilepath) if callable(entry[1]): with open(outfilepath, "w") as fd: entry[1](project, fd) else: infilepath = os.path.join(os.path.dirname(__file__), entry[1]) template.expand(infilepath, outfilepath, _TemplateHandler(project))
def __init__(self, dxrconfig, treeconfig, filepath, newroot): # Read and expand all templates self.html_header = template.expand(template.readFile(dxrconfig["html_header"]), dxrconfig["virtroot"], treeconfig["tree"]) self.html_footer = template.expand(template.readFile(dxrconfig["html_footer"]), dxrconfig["virtroot"], treeconfig["tree"]) self.html_sidebar_header = template.expand(template.readFile(dxrconfig["html_sidebar_header"]), dxrconfig["virtroot"], treeconfig["tree"]) self.html_sidebar_footer = template.expand(template.readFile(dxrconfig["html_sidebar_footer"]), dxrconfig["virtroot"], treeconfig["tree"]) self.html_main_header = template.expand(template.readFile(dxrconfig["html_main_header"]), dxrconfig["virtroot"], treeconfig["tree"]) self.html_main_footer = template.expand(template.readFile(dxrconfig["html_main_footer"]), dxrconfig["virtroot"], treeconfig["tree"]) self.source = template.readFile(filepath) self.virtroot = dxrconfig["virtroot"] self.treename = treeconfig["tree"] self.filename = os.path.basename(filepath) self.srcroot = treeconfig["sourcedir"] self.newroot = os.path.normpath(newroot) self.srcpath = filepath.replace(self.srcroot + '/', '') self._init_db(dxrconfig["database"]) self.tokenizer = self._createTokenizer() # Config info used by dxr.js self.globalScript = ['var virtroot = "%s", tree = "%s";' % (self.virtroot, self.treename)]
def _expand_params(self, parent, key, value, global_env): # 文字列の場合はテンプレートとして扱い、 # 辞書、リストの場合はさらにその中の要素を展開する。 # ここで指定していない数値等の型はそのまま if isinstance(value, basestring): new_value = template.expand(value, global_env) if isinstance(key, basestring) and key.startswith('+'): original_key = key.lstrip('+') parent[original_key] = ast.literal_eval(new_value) del parent[key] else: parent[key] = new_value elif isinstance(value, dict): for k, v in value.items(): self._expand_params(value, k, v, global_env) elif isinstance(value, list): for k, v in enumerate(value): self._expand_params(value, k, v, global_env)
def _expand_params(self, parent, key, value, global_env): # 文字列の場合はテンプレートとして扱い、 # 辞書、リストの場合はさらにその中の要素を展開する。 # ここで指定していない数値等の型はそのまま if isinstance(value, util.basestring): # key に + が付いている場合は変数をそのまま代入する if isinstance(key, util.basestring) and key.startswith('+'): original_key = key.lstrip('+') result = template.expand_param({original_key: value}, global_env) parent[original_key] = result[original_key] del parent[key] else: parent[key] = template.expand(value, global_env) elif isinstance(value, dict): # see: scenarioloader.py # 辞書オブジェクトに勝手に __line__ が入ることによって挙動が変わることがあるので # 削除しておく if '__line__' in value: del value['__line__'] for k, v in value.items(): self._expand_params(value, k, v, global_env) elif isinstance(value, list): for k, v in enumerate(value): self._expand_params(value, k, v, global_env)