mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-05-30 15:19:40 +03:00
Handle newlines and semicolons on Linux
This commit is contained in:
parent
f0c18debda
commit
e95034565f
22
config.py
22
config.py
@ -315,9 +315,9 @@ class Config:
|
||||
try:
|
||||
val = self.config.get(self.SECTION, key)
|
||||
if u'\n' in val:
|
||||
return val.split(u'\n')[:-1]
|
||||
return [self._unescape(x) for x in val.split(u'\n')[:-1]]
|
||||
else:
|
||||
return val
|
||||
return self._unescape(val)
|
||||
except:
|
||||
return None
|
||||
|
||||
@ -329,9 +329,9 @@ class Config:
|
||||
|
||||
def set(self, key, val):
|
||||
if isinstance(val, basestring) or isinstance(val, numbers.Integral):
|
||||
self.config.set(self.SECTION, key, val)
|
||||
self.config.set(self.SECTION, key, self._escape(val))
|
||||
elif hasattr(val, '__iter__'): # iterable
|
||||
self.config.set(self.SECTION, key, u'\n'.join([unicode(x) for x in val] + [u';']))
|
||||
self.config.set(self.SECTION, key, u'\n'.join([self._escape(x) for x in val] + [u';']))
|
||||
else:
|
||||
raise NotImplementedError()
|
||||
|
||||
@ -346,6 +346,20 @@ class Config:
|
||||
self.save()
|
||||
self.config = None
|
||||
|
||||
def _escape(self, val):
|
||||
return unicode(val).replace(u'\\', u'\\\\').replace(u'\n', u'\\n').replace(u';', u'\\;')
|
||||
|
||||
def _unescape(self, val):
|
||||
chars = list(val)
|
||||
i = 0
|
||||
while i < len(chars):
|
||||
if chars[i] == '\\':
|
||||
chars.pop(i)
|
||||
if chars[i] == 'n':
|
||||
chars[i] = '\n'
|
||||
i += 1
|
||||
return u''.join(chars)
|
||||
|
||||
else: # ???
|
||||
|
||||
def __init__(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user