Only set a setting if the entire line parses

This commit is contained in:
Thomas Hurst 2008-08-27 00:55:57 +01:00
parent a63c1358ca
commit 32fc1f5082
2 changed files with 17 additions and 7 deletions

View File

@ -226,6 +226,8 @@ Some lines have been ignored.""") % escape(repr(self.rcfilename))
dialog.run()
dialog.destroy()
print repr(self.values)
def _rc_set_callback(self):
def callback(section, key, value):
if section is None:

View File

@ -20,8 +20,8 @@ QuotedStrings = {"'": re.compile(r"'([^'\r\n]*)'"), '"': re.compile(r'"([^"\r\n]
Section = re.compile(r"\[([^\r\n\]]+)\][ \f\t]*")
Setting = re.compile(r"(\w+)\s*=\s*")
PaletteColours = '(?:#[0-9a-fA-F]{12}:){15}#[0-9a-fA-F]{12}'
SingleColour = '#[0-9a-fA-F]{6}|#[0-9a-fA-F]{3}'
PaletteColours = '(?:(?:#[0-9a-fA-F]{12}:){15}#[0-9a-fA-F]{12})'
SingleColour = '(?:#[0-9a-fA-F]{6}|#[0-9a-fA-F]{3})'
Colourvalue = re.compile(group(PaletteColours, SingleColour))
Barevalue = re.compile(r'((?:[^\r\n# \f\t]+|[^\r\n#]+(?!' + Ignore.pattern +'))+)')
@ -114,7 +114,7 @@ class ConfigFile:
self._line = ''
self._currsection = None
self._cursetting = None
self._currsetting = None
self._currvalue = None
self.errors = []
@ -164,8 +164,16 @@ class ConfigFile:
def _value(self, value):
dbg("Value %s" % repr(value))
try:
self.callback(self._currsection, self._currsetting, value)
except ValueError, e:
raise ConfigSyntaxError(str(e), self)
self._currvalue = value
def _line_ok(self):
section, setting, value = self._currsection, self._currsetting, self._currvalue
if value is None: return
else:
try:
self.callback(self._currsection, self._currsetting, self._currvalue)
except ValueError, e:
raise ConfigSyntaxError(str(e), self)
finally:
self._currvalue = None