#!/usr/bin/env python import sys filename = sys.argv[1] print filename fr = open(filename) fw = open(filename+".new", "w") ew = open(filename+".en", "w") hw = open(filename+".stringsh", "w") cw = open(filename+".stringsc", "w") replacements = {} for line in fr.readlines(): pos_pstr = line.find("PSTR(\"") MENU = False if pos_pstr < 0: pos_pstr = line.find("MENU(\"") MENU = True while pos_pstr >= 0: # print line, if MENU: pos_endparenthesis = line.find('"', pos_pstr+7) else: pos_endparenthesis = line.find("\")", pos_pstr) str = line[pos_pstr+6:pos_endparenthesis] str_rep = "STR_"+str.upper() for s in (" ", ".", "[", "]", "-", "!", "/", ")", "(", "%", "+", ":"): str_rep = str_rep.replace(s, "") if "14" in str or "32" in str or "@" in str or len(str_rep) <= 5: pos_pstr = -1 else: if MENU: glob_str = line[pos_pstr+5:pos_endparenthesis+1] str_rep = "STR_MENU"+str.upper() else: glob_str = line[pos_pstr:pos_endparenthesis+2] str_rep = "STR_"+str.upper() for s in (" ", ".", "[", "]", "-", "!", "/", ")", "(", "%", "+", ":"): str_rep = str_rep.replace(s, "") line = line.replace(glob_str, str_rep) if str_rep in replacements.keys(): if replacements[str_rep] != str: print "!!!!! NON !!!!!" else: replacements[str_rep] = str print glob_str, "=>", str, str_rep ew.write("#define " + str_rep[1:] + " "*(17-len(str_rep)) + '"%s"\n' % str) hw.write("extern const PROGMEM char %s[];\n" % str_rep) cw.write("const prog_char APM %s[] = %s;\n" % (str_rep, str_rep[1:])) pos_pstr = line.find("PSTR(\"") fw.write(line) fw.close() ew.close() hw.close() cw.close()