Show More
@@ -42,17 +42,12 b' class config(object):' | |||||
42 | def __iter__(self): |
|
42 | def __iter__(self): | |
43 | for d in self.sections(): |
|
43 | for d in self.sections(): | |
44 | yield d |
|
44 | yield d | |
45 |
def update(self, src |
|
45 | def update(self, src): | |
46 |
|
|
46 | for s in src: | |
47 | sections = src.sections() |
|
|||
48 | for s in sections: |
|
|||
49 | if s not in src: |
|
|||
50 | continue |
|
|||
51 | if s not in self: |
|
47 | if s not in self: | |
52 | self._data[s] = sortdict() |
|
48 | self._data[s] = sortdict() | |
53 |
|
|
49 | self._data[s].update(src._data[s]) | |
54 | self._data[s][k] = src._data[s][k] |
|
50 | self._source.update(src._source) | |
55 | self._source[(s, k)] = src._source[(s, k)] |
|
|||
56 | def get(self, section, item, default=None): |
|
51 | def get(self, section, item, default=None): | |
57 | return self._data.get(section, {}).get(item, default) |
|
52 | return self._data.get(section, {}).get(item, default) | |
58 | def getsource(self, section, item): |
|
53 | def getsource(self, section, item): | |
@@ -67,7 +62,7 b' class config(object):' | |||||
67 | self._data[section][item] = value |
|
62 | self._data[section][item] = value | |
68 | self._source[(section, item)] = source |
|
63 | self._source[(section, item)] = source | |
69 |
|
64 | |||
70 | def read(self, path, fp=None): |
|
65 | def read(self, path, fp=None, sections=None): | |
71 | sectionre = re.compile(r'\[([^\[]+)\]') |
|
66 | sectionre = re.compile(r'\[([^\[]+)\]') | |
72 | itemre = re.compile(r'([^=\s]+)\s*=\s*(.*\S|)') |
|
67 | itemre = re.compile(r'([^=\s]+)\s*=\s*(.*\S|)') | |
73 | contre = re.compile(r'\s+(\S.*\S)') |
|
68 | contre = re.compile(r'\s+(\S.*\S)') | |
@@ -87,6 +82,8 b' class config(object):' | |||||
87 | if cont: |
|
82 | if cont: | |
88 | m = contre.match(l) |
|
83 | m = contre.match(l) | |
89 | if m: |
|
84 | if m: | |
|
85 | if sections and section not in sections: | |||
|
86 | continue | |||
90 | v = self.get(section, item) + "\n" + m.group(1) |
|
87 | v = self.get(section, item) + "\n" + m.group(1) | |
91 | self.set(section, item, v, "%s:%d" % (path, line)) |
|
88 | self.set(section, item, v, "%s:%d" % (path, line)) | |
92 | continue |
|
89 | continue | |
@@ -110,12 +107,16 b' class config(object):' | |||||
110 | m = itemre.match(l) |
|
107 | m = itemre.match(l) | |
111 | if m: |
|
108 | if m: | |
112 | item = m.group(1) |
|
109 | item = m.group(1) | |
|
110 | cont = 1 | |||
|
111 | if sections and section not in sections: | |||
|
112 | continue | |||
113 | self.set(section, item, m.group(2), "%s:%d" % (path, line)) |
|
113 | self.set(section, item, m.group(2), "%s:%d" % (path, line)) | |
114 | cont = 1 |
|
|||
115 | continue |
|
114 | continue | |
116 | m = unsetre.match(l) |
|
115 | m = unsetre.match(l) | |
117 | if m: |
|
116 | if m: | |
118 | name = m.group(1) |
|
117 | name = m.group(1) | |
|
118 | if sections and section not in sections: | |||
|
119 | continue | |||
119 | if self.get(section, name) != None: |
|
120 | if self.get(section, name) != None: | |
120 | del self._data[section][name] |
|
121 | del self._data[section][name] | |
121 | continue |
|
122 | continue |
@@ -82,17 +82,17 b' class ui(object):' | |||||
82 | trusted = sections or assumetrusted or self._is_trusted(fp, filename) |
|
82 | trusted = sections or assumetrusted or self._is_trusted(fp, filename) | |
83 |
|
83 | |||
84 | try: |
|
84 | try: | |
85 | cdata.read(filename, fp) |
|
85 | cdata.read(filename, fp, sections=sections) | |
86 | except error.ConfigError, inst: |
|
86 | except error.ConfigError, inst: | |
87 | if trusted: |
|
87 | if trusted: | |
88 | raise |
|
88 | raise | |
89 | self.warn(_("Ignored: %s\n") % str(inst)) |
|
89 | self.warn(_("Ignored: %s\n") % str(inst)) | |
90 |
|
90 | |||
91 | if trusted: |
|
91 | if trusted: | |
92 |
self.cdata.update(cdata |
|
92 | self.cdata.update(cdata) | |
93 |
self.cdata.update(self.overlay |
|
93 | self.cdata.update(self.overlay) | |
94 |
self.ucdata.update(cdata |
|
94 | self.ucdata.update(cdata) | |
95 |
self.ucdata.update(self.overlay |
|
95 | self.ucdata.update(self.overlay) | |
96 |
|
96 | |||
97 | if root is None: |
|
97 | if root is None: | |
98 | root = os.path.expanduser('~') |
|
98 | root = os.path.expanduser('~') |
General Comments 0
You need to be logged in to leave comments.
Login now