forked from worldlife123/bf2-infomap-generator
-
Notifications
You must be signed in to change notification settings - Fork 1
/
conParser.py
142 lines (118 loc) · 4.05 KB
/
conParser.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# ----------------------------------------------
# FIRE'S SIMPLE CON PARSER
#
# CONTACT:
# www.flmod.com
#
# USAGE (READ):
# config = readCon(file)
# Returns a list: [{key1: [values1]}, {key2: [values2, values2]}, ...]
#
# USAGE (WRITE):
# success = writeCon(config, file)
# ----------------------------------------------
# ----------------------------------------------
# Imports
# ----------------------------------------------
#from bf2 import g_debug
g_debug = 0
def readCon(conFile):
config = []
rem = False
# ----------------------------------------------
# Open the file
# ----------------------------------------------
if g_debug:
print('Reading CON file...')
try:
f = open(conFile, 'r')
lines = f.readlines()
f.close()
except IOError: # Damn..
if g_debug:
print('Error while reading CON file!!')
return config
for line in lines:
# ----------------------------------------------
# Replace tabs etc.
# ----------------------------------------------
line = line.replace('\t', ' ')
line = line.strip(' \n')
# ----------------------------------------------
# Remove comments
# ----------------------------------------------
if line[:4].lower().strip() == 'rem':
continue
elif line[:9].lower().strip() == 'beginrem':
rem = True
continue
elif line[:7].lower().strip() == 'endrem':
rem = False
continue
else:
if rem:
continue
# ----------------------------------------------
# Find the end of the key
# ----------------------------------------------
pos = line.find(' ')
if pos < 0: # Not found :(
key = line
values = []
#modified by worldlife in order to get "endIf" command
# ----------------------------------------------
# Get the key
# ----------------------------------------------
else:
key = line[:pos]
# ----------------------------------------------
# Get the values
# ----------------------------------------------
values = line[pos + 1:].split(' ')
for value in values:
value = value.strip(' ')
config.append({key: values})
# ----------------------------------------------
# Return the list
# ----------------------------------------------
return config
# --------------------------------------------------------------------------------------------
def writeCon(config, conFile):
# ----------------------------------------------
# Open the file
# ----------------------------------------------
if g_debug:
print('Writing CON file...')
try:
f = open(conFile, 'w+')
pass
except IOError: # Damn..
return False
data = 'rem *** Created with FiRe\'s CON parser ***\n\n'
# ----------------------------------------------
# Create the Con file
# ----------------------------------------------
for conf in config:
# ----------------------------------------------
# Add the key
# ----------------------------------------------
data += conf.items()[0][0]
# ----------------------------------------------
# Add the values
# ----------------------------------------------
for key in conf.items()[0][1]:
data += ' ' + key
data += '\n'
# ----------------------------------------------
# Write the config to file
# ----------------------------------------------
try:
f.write(data)
f.close()
except IOError:
if g_debug:
print('Error while writing CON file!!')
return False
else:
return True