diff options
Diffstat (limited to 'mercurial/config.py')
-rw-r--r-- | mercurial/config.py | 50 |
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 |