summaryrefslogtreecommitdiffstats
path: root/Lib/ConfigParser.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1999-06-17 18:41:42 (GMT)
committerGuido van Rossum <guido@python.org>1999-06-17 18:41:42 (GMT)
commit9e480adf9b3520ea3deb322fd1214f53a2293a0d (patch)
tree98de91fae62b4b773f4aa8c333db7de4af23a3d8 /Lib/ConfigParser.py
parente01978996236ab1a860684cd522604aadcb0d6d7 (diff)
downloadcpython-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.py13
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)