Fix hair, dick around with new game screen.
[18plus-7leafadventure.git] / parseTxt.py
blob4d1676ecca6de195209ba0d58eb87c431b585c65
1 # -*- coding: utf-8 -*-
2 import os, sys
4 print 'AO7L TEXT PARSER'
5 print sys.argv[1]+" -> "+sys.argv[2]
7 def fixBBCode(line,code,tagname):
8 line=line.replace(u'['+code.lower()+']',u'<'+tagname+u'>')
9 line=line.replace(u'[/'+code.lower()+u']',u'</'+tagname+u'>')
10 line=line.replace(u'['+code.upper()+']',u'<'+tagname+u'>')
11 line=line.replace(u'[/'+code.upper()+u']',u'</'+tagname+u'>')
12 return line
14 with open(sys.argv[2],'w') as out:
15 out.write(u'text = ""'.encode('utf8'))
16 with open(sys.argv[1],'r') as inf:
17 bracketOpen=False
18 for ln, _line in enumerate(inf):
19 line = _line.decode('utf8').replace(u'\n',u'')
20 hasText=False
21 commentlevel=0
22 comment=''
23 buffer=''
24 line=line.replace(u'. . .',u'...') # Fix ellipses
26 #BBCode
27 line=fixBBCode(line,'b','b')
28 line=fixBBCode(line,'i','i')
30 for i, c in enumerate(line):
31 #print u'[%d:%d] = %x' % (ln,i,c.encode('utf8'))
32 if c == u']':
33 commentlevel-=1
34 if commentlevel < 0:
35 commentlevel=0
36 print 'Line %d, char %d: CLEVEL %d' % (ln,i,commentlevel)
37 if commentlevel==0:
38 if comment is not '':
39 out.write((u"\n/* "+comment.strip()+u" */").encode('utf8'))
40 comment=''
41 continue
42 if c == u'[':
43 commentlevel+=1
44 print 'Line %d, char %d: CLEVEL %d' % (ln,i,commentlevel)
45 if buffer is not '':
46 out.write((u'\ntext += "'+buffer.replace(u'"',u'&quot;').replace(u'{BR}',u'";\ntext += "').strip()+u'";').encode('utf8'))
47 buffer=''
48 if commentlevel == 1:
49 continue
50 if c in (u'“',u'”'):
51 c = u'"'
52 if commentlevel > 0:
53 comment += c
54 else:
55 buffer += c
56 if (len(buffer)%90) == 0:
57 buffer += u'{BR}'
58 if buffer is not '':
59 out.write((u"\ntext += \"<p>"+buffer.replace(u'"',u"&quot;").replace(u'{BR}',u'";\ntext += "').strip()+u"</p>\";").encode('utf8'))
60 if comment is not '':
61 out.write((u"\n/* "+comment.strip()+u" */").encode('utf8'))