#!/usr/bin/env python import os import sys # print fix try: Print = eval("print") # python 3.0 case except SyntaxError: try: D = dict() exec("from __future__ import print_function\np=print", D) Print = D["p"] # 2.6 case del D except SyntaxError: del D def Print(*args, **kwd): # 2.4, 2.5, define our own Print function fout = kwd.get("file", sys.stdout) w = fout.write if args: w(str(args[0])) sep = kwd.get("sep", " ") for a in args[1:]: w(sep) w(str(a)) w(kwd.get("end", "\n")) def check_substring(data, substring): s = "\n".join(data); if substring in s: return True return False def merge_defs(): defs=False for l in f1_contents: if defs: if not "" in l: f2.write(l) else: break elif "" in l: defs=True if len(sys.argv) < 3: Print('Usage: %s stickman.sif file.sif' % sys.argv[0]) Print(' (first stickman file will be merged into second)') sys.exit() f1_filename = sys.argv[1] f2_filename = sys.argv[2] # TODO: check version of first file f1 = open(f1_filename, 'r') f1_contents = f1.readlines() f1.close() f2 = open(f2_filename, 'r') f2_contents = f2.readlines() f2.close() f2 = open(f2_filename, 'w') num=1 while check_substring(f2_contents, '(stk%s' % num): num+=1 for i, line in enumerate(f1_contents): f1_contents[i] = line.replace('(stk','(stk%s' % num) defs_found=False for line in f2_contents: if "" in line: defs_found=True merge_defs() if line == "\n": if not defs_found: f2.write("\n") merge_defs() f2.write("\n") canvas=False for l in f1_contents: if canvas: if not l == "\n": f2.write(l) else: break elif "" in l: canvas=True f2.write(line) f2.close()