From 32fc1f5082919e8db8a553e11bcb1307436cdfa4 Mon Sep 17 00:00:00 2001 From: Thomas Hurst Date: Wed, 27 Aug 2008 00:55:57 +0100 Subject: [PATCH] Only set a setting if the entire line parses --- terminatorlib/config.py | 2 ++ terminatorlib/configfile.py | 22 +++++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/terminatorlib/config.py b/terminatorlib/config.py index 2fc3ba5f..d2502c9d 100755 --- a/terminatorlib/config.py +++ b/terminatorlib/config.py @@ -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: diff --git a/terminatorlib/configfile.py b/terminatorlib/configfile.py index 20da36c4..3d4ab7f3 100644 --- a/terminatorlib/configfile.py +++ b/terminatorlib/configfile.py @@ -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