Blame synfig-studio/plugins/add-skeleton-simple/add-skeleton-simple.py

2340e6
#!/usr/bin/env python
2340e6
43eb8c
#
a94af9
# Copyright (c) 2012-2013 by Konstantin Dmitriev <ksee.zelgadis@gmail.com></ksee.zelgadis@gmail.com>
43eb8c
#
43eb8c
# This program is free software; you can redistribute it and/or modify
43eb8c
# it under the terms of the GNU General Public License as published by
43eb8c
# the Free Software Foundation; either version 2 of the License, or
43eb8c
# (at your option) any later version.
43eb8c
2340e6
import os
2340e6
import sys
a94af9
import codecs
2340e6
2340e6
def check_substring(data, substring):
2340e6
	s = "\n".join(data);
2340e6
	if substring in s:
2340e6
			return True
2340e6
	return False
2340e6
2340e6
def process(filename):
2340e6
	def merge_defs():
2340e6
		defs=False
2340e6
		for l in template_contents:
2340e6
			if defs:
2340e6
				if not "" in l:
2340e6
					inputfile_f.write(l)
2340e6
				else:
2340e6
					break
2340e6
			elif "<defs>" in l:</defs>
2340e6
				defs=True
2340e6
	
2340e6
	template_filename = os.path.join(os.path.dirname(sys.argv[0]), 'stickman.sif')
2340e6
a94af9
	template_f = codecs.open(template_filename, 'r', encoding='utf-8')
2340e6
	template_contents = template_f.readlines()
2340e6
	template_f.close()
2340e6
	
2340e6
	# Read the input file
a94af9
	inputfile_f = codecs.open(filename, 'r', encoding='utf-8')
2340e6
	inputfile_contents = inputfile_f.readlines()
2340e6
	inputfile_f.close()
2340e6
	
2340e6
	# Now write results to the same file
a94af9
	inputfile_f = open(filename, 'w', encoding='utf-8')
2340e6
2340e6
	num=1
2340e6
	while check_substring(inputfile_contents, '(stk%s' % num):
2340e6
		num+=1
2340e6
2340e6
	for i, line in enumerate(template_contents):
2340e6
		template_contents[i] = line.replace('(stk','(stk%s' % num)
2340e6
2340e6
	defs_found=False
2340e6
	for line in inputfile_contents:
2340e6
		if "" in line:
2340e6
			defs_found=True
2340e6
			merge_defs()
2340e6
		if line == "\n":
2340e6
			if not defs_found:
2340e6
				inputfile_f.write("<defs>\n")</defs>
2340e6
				merge_defs()
2340e6
				inputfile_f.write("\n")
2340e6
			canvas=False
2340e6
			for l in template_contents:
2340e6
				if canvas:
2340e6
					if not l == "\n":
2340e6
						inputfile_f.write(l)
2340e6
					else:
2340e6
						break
2340e6
				elif "" in l:
2340e6
					canvas=True
2340e6
		inputfile_f.write(line)
2340e6
2340e6
	inputfile_f.close()
2340e6
2340e6
if len(sys.argv) < 2:
2340e6
	sys.exit()
2340e6
else:
2340e6
	process(sys.argv[1])
2340e6
	
2340e6