51cc09b081
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@209 8092fc87-c524-0410-9efc-e669fe64eaf9
130 lines
4.1 KiB
Python
Executable File
130 lines
4.1 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
import sys
|
|
import os.path
|
|
import Dialogue
|
|
|
|
races = ['arilou', 'blackur', 'chmmr', 'comandr', 'druuge',
|
|
'ilwrath', 'melnorm', 'mycon', 'orz', 'pkunk', 'rebel',
|
|
'shofixt', 'slyhome', 'slyland', 'spahome', 'spathi',
|
|
'starbas', 'supox', 'syreen', 'talkpet', 'thradd', 'utwig',
|
|
'umgah', 'urquan', 'vux', 'yehat', 'zoqfot']
|
|
|
|
root = os.path.join('..','..','sc2')
|
|
|
|
race_speeches = {}
|
|
|
|
def load_txt():
|
|
print "Loading .txt files...",
|
|
for race in races:
|
|
try:
|
|
filename = os.path.join(root,'content','comm',race,race+'.txt')
|
|
speeches = Dialogue.Speeches(file(filename))
|
|
race_speeches[race] = speeches
|
|
print race,
|
|
except ValueError:
|
|
print "["+race+" didn't parse]",
|
|
except IOError:
|
|
print "["+race+" didn't load]",
|
|
sys.stdout.flush()
|
|
print ""
|
|
|
|
def do_commands():
|
|
def do_delete(speeches, argstr):
|
|
args = argstr.split()
|
|
# Check all args before deleting any of them
|
|
for arg in args:
|
|
temp = speeches.speechdict[arg]
|
|
for arg in args:
|
|
speeches.deletespeech(arg)
|
|
def do_fuse(speeches, argstr):
|
|
i = argstr.index('=')
|
|
left = argstr[:i].split()
|
|
right = argstr[i+1:].split()
|
|
if len(left) != 1: raise ValueError
|
|
if len(right) == 0: raise ValueError
|
|
new_id = left[0]
|
|
old_id = right[0]
|
|
speeches.renamespeech(old_id, new_id)
|
|
# Split out tags from items.
|
|
is_tag = 1
|
|
tags = []
|
|
speechIDs = []
|
|
for arg in right[1:]:
|
|
if is_tag:
|
|
tags.append(arg)
|
|
is_tag = 0
|
|
else:
|
|
speechIDs.append(arg)
|
|
is_tag = 1
|
|
# Now do the actual join
|
|
for tag, speech in map(None, tags, speechIDs):
|
|
speeches.joinspeech(new_id, tag, speech)
|
|
for speech in speechIDs:
|
|
speeches.deletespeech(speech)
|
|
def do_add(speeches, argstr):
|
|
args = argstr.split()
|
|
if len(args) == 0: raise ValueError
|
|
for arg in args[1:]:
|
|
speeches.joinspeech(args[0], None, arg)
|
|
def do_addstr(speeches, argstr):
|
|
args = argstr.split()
|
|
if len(args) == 0: raise ValueError
|
|
id = args[0]
|
|
str = " ".join(args[1:])
|
|
speeches.addtospeech(id, str)
|
|
def do_pretag(speeches, argstr):
|
|
args = argstr.split()
|
|
if len(args) != 2: raise ValueError
|
|
id = args[0]
|
|
tag = args[1]
|
|
speeches.pretag(id, tag)
|
|
directives = {'delete':do_delete, 'fuse':do_fuse,
|
|
'add':do_add, 'addstr':do_addstr,
|
|
'pretag':do_pretag}
|
|
print "Processing command file..."
|
|
try:
|
|
cmdfile = file(sys.argv[1])
|
|
for cmd in cmdfile:
|
|
try:
|
|
i = cmd.index(':')
|
|
left = cmd[:i].split()
|
|
right = cmd[i+1:]
|
|
if len(left) != 2: raise ValueError
|
|
directive = directives[left[0].lower()]
|
|
race = race_speeches[left[1]]
|
|
directive(race, right)
|
|
except ValueError:
|
|
if cmd.strip() != "":
|
|
print "Malformed command '%s'" % cmd.strip()
|
|
except KeyError:
|
|
print "Bad ID in '%s'" % cmd.strip()
|
|
cmdfile.close()
|
|
except IndexError:
|
|
print "Well, we would have if it were specified."
|
|
except IOError:
|
|
print "Well, we would have had the file specified actually existed."
|
|
|
|
def write_XML():
|
|
print "Writing XML...",
|
|
for race in races:
|
|
try:
|
|
speeches = race_speeches[race]
|
|
outfilename = os.path.join('.', race+'.xml');
|
|
race_xml = speeches.as_xml()
|
|
xmlfile = file(outfilename, 'wt')
|
|
xmlfile.write(race_xml)
|
|
xmlfile.close()
|
|
print race,
|
|
except KeyError:
|
|
print "["+race+" didn't load or process]",
|
|
except IOError:
|
|
print "["+race+" couldn't write]",
|
|
sys.stdout.flush()
|
|
print ""
|
|
|
|
if __name__ == "__main__":
|
|
load_txt()
|
|
do_commands()
|
|
write_XML()
|