def _fill_interpolation(self, n): text = n.format_string.value parser = Parser() format_string, expressions = self._extract_interpolations(text) exprs = [parser.parse(expr) for expr in expressions] n.format_string.value = format_string n.expressions.exprs.extend(exprs)
def _load_file(self, path): with open(path, 'r') as f: source = f.read() print source parser = Parser() transformer = AstTransformer() ast = parser.parse(source) transformer.visit(ast) return ast
argparser.add_argument("-o", required=True, help="output file", metavar="FILE", type=lambda x: is_writable(argparser,x)) argparser.add_argument("-v", required=False, help="verbosity", action="store_true") return argparser if __name__ == '__main__': args = build_argparser().parse_args() source = "" with open(args.i, 'r') as input_file: source = input_file.read() parser = Parser() ast = parser.parse(source) if args.v: log_ast(ast) # Load files # We just search for calls to the 'load' function to_replace = {} # Stores which Call nodes to replace with AST from loaded file for i, stmt in enumerate(ast.stmts): if isinstance(stmt, Call) and stmt.name.name == 'load': path = stmt.args.arguments[0].value to_replace[i] = path # Second loop as you do not want to alter a list you are iterating on for i, path in to_replace.items(): with open(path, 'r') as f: