summaryrefslogtreecommitdiff
path: root/mercurial/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'mercurial/config.py')
-rw-r--r--mercurial/config.py50
1 files changed, 8 insertions, 42 deletions
diff --git a/mercurial/config.py b/mercurial/config.py
index 9906d6e..2556ef1 100644
--- a/mercurial/config.py
+++ b/mercurial/config.py
@@ -7,7 +7,7 @@
from i18n import _
import error, util
-import os, errno
+import re, os, errno
class sortdict(dict):
'a simple sorted dictionary'
@@ -35,10 +35,6 @@ class sortdict(dict):
def __delitem__(self, key):
dict.__delitem__(self, key)
self._list.remove(key)
- def keys(self):
- return self._list
- def iterkeys(self):
- return self._list.__iter__()
class config(object):
def __init__(self, data=None):
@@ -65,19 +61,6 @@ class config(object):
self._source.update(src._source)
def get(self, section, item, default=None):
return self._data.get(section, {}).get(item, default)
-
- def backup(self, section, item):
- """return a tuple allowing restore to reinstall a previous valuesi
-
- The main reason we need it is because it handle the "no data" case.
- """
- try:
- value = self._data[section][item]
- source = self.source(section, item)
- return (section, item, value, source)
- except KeyError:
- return (section, item)
-
def source(self, section, item):
return self._source.get((section, item), "")
def sections(self):
@@ -90,28 +73,14 @@ class config(object):
self._data[section][item] = value
self._source[(section, item)] = source
- def restore(self, data):
- """restore data returned by self.backup"""
- if len(data) == 4:
- # restore old data
- section, item, value, source = data
- self._data[section][item] = value
- self._source[(section, item)] = source
- else:
- # no data before, remove everything
- section, item = data
- if section in self._data:
- del self._data[section][item]
- self._source.pop((section, item), None)
-
def parse(self, src, data, sections=None, remap=None, include=None):
- sectionre = util.compilere(r'\[([^\[]+)\]')
- itemre = util.compilere(r'([^=\s][^=]*?)\s*=\s*(.*\S|)')
- contre = util.compilere(r'\s+(\S|\S.*\S)\s*$')
- emptyre = util.compilere(r'(;|#|\s*$)')
- commentre = util.compilere(r'(;|#)')
- unsetre = util.compilere(r'%unset\s+(\S+)')
- includere = util.compilere(r'%include\s+(\S|\S.*\S)\s*$')
+ sectionre = re.compile(r'\[([^\[]+)\]')
+ itemre = re.compile(r'([^=\s][^=]*?)\s*=\s*(.*\S|)')
+ contre = re.compile(r'\s+(\S|\S.*\S)\s*$')
+ emptyre = re.compile(r'(;|#|\s*$)')
+ commentre = re.compile(r'(;|#)')
+ unsetre = re.compile(r'%unset\s+(\S+)')
+ includere = re.compile(r'%include\s+(\S|\S.*\S)\s*$')
section = ""
item = None
line = 0
@@ -119,9 +88,6 @@ class config(object):
for l in data.splitlines(True):
line += 1
- if line == 1 and l.startswith('\xef\xbb\xbf'):
- # Someone set us up the BOM
- l = l[3:]
if cont:
if commentre.match(l):
continue