diff options
author | Guido van Rossum <guido@python.org> | 1999-06-17 18:41:42 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1999-06-17 18:41:42 (GMT) |
commit | 9e480adf9b3520ea3deb322fd1214f53a2293a0d (patch) | |
tree | 98de91fae62b4b773f4aa8c333db7de4af23a3d8 /Lib/ConfigParser.py | |
parent | e01978996236ab1a860684cd522604aadcb0d6d7 (diff) | |
download | cpython-9e480adf9b3520ea3deb322fd1214f53a2293a0d.zip cpython-9e480adf9b3520ea3deb322fd1214f53a2293a0d.tar.gz cpython-9e480adf9b3520ea3deb322fd1214f53a2293a0d.tar.bz2 |
Patch suggested (and partially provided) by Lars Damerow: instead of
always lowercasing the option name, call a method optionxform() which
can be overridden. Also make the regexps SECTRE and OPTRE non-private
variables so they can also be overridden.
Diffstat (limited to 'Lib/ConfigParser.py')
-rw-r--r-- | Lib/ConfigParser.py | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/Lib/ConfigParser.py b/Lib/ConfigParser.py index dd8b6d8..4dbe606 100644 --- a/Lib/ConfigParser.py +++ b/Lib/ConfigParser.py @@ -199,7 +199,7 @@ class ConfigParser: # Update with the entry specific variables if vars: d.update(vars) - option = string.lower(option) + option = self.optionxform(option) try: rawval = d[option] except KeyError: @@ -236,16 +236,19 @@ class ConfigParser: raise ValueError, 'Not a boolean: %s' % v return val + def optionxform(self, optionstr): + return string.lower(optionstr) + # # Regular expressions for parsing section headers and options. Note a # slight semantic change from the previous version, because of the use # of \w, _ is allowed in section header names. - __SECTCRE = re.compile( + SECTCRE = re.compile( r'\[' # [ r'(?P<header>[-\w]+)' # `-', `_' or any alphanum r'\]' # ] ) - __OPTCRE = re.compile( + OPTCRE = re.compile( r'(?P<option>[-.\w]+)' # - . _ alphanum r'[ \t]*[:=][ \t]*' # any number of space/tab, # followed by separator @@ -287,7 +290,7 @@ class ConfigParser: # a section header or option header? else: # is it a section header? - mo = self.__SECTCRE.match(line) + mo = self.SECTCRE.match(line) if mo: sectname = mo.group('header') if self.__sections.has_key(sectname): @@ -304,7 +307,7 @@ class ConfigParser: raise MissingSectionHeaderError(fp.name, lineno, `line`) # an option line? else: - mo = self.__OPTCRE.match(line) + mo = self.OPTCRE.match(line) if mo: optname, optval = mo.group('option', 'value') optname = string.lower(optname) |