120 return self.overlay[(section, name)] |
120 return self.overlay[(section, name)] |
121 if self.cdata.has_option(section, name): |
121 if self.cdata.has_option(section, name): |
122 try: |
122 try: |
123 return self.cdata.get(section, name) |
123 return self.cdata.get(section, name) |
124 except ConfigParser.InterpolationError, inst: |
124 except ConfigParser.InterpolationError, inst: |
125 raise util.Abort(_("Error in configuration:\n%s") % inst) |
125 raise util.Abort(_("Error in configuration section [%s] " |
|
126 "parameter '%s':\n%s") |
|
127 % (section, name, inst)) |
126 if self.parentui is None: |
128 if self.parentui is None: |
127 return default |
129 return default |
128 else: |
130 else: |
129 return self.parentui.config(section, name, default) |
131 return self.parentui.config(section, name, default) |
130 |
132 |
142 return self.overlay[(section, name)] |
144 return self.overlay[(section, name)] |
143 if self.cdata.has_option(section, name): |
145 if self.cdata.has_option(section, name): |
144 try: |
146 try: |
145 return self.cdata.getboolean(section, name) |
147 return self.cdata.getboolean(section, name) |
146 except ConfigParser.InterpolationError, inst: |
148 except ConfigParser.InterpolationError, inst: |
147 raise util.Abort(_("Error in configuration:\n%s") % inst) |
149 raise util.Abort(_("Error in configuration section [%s] " |
|
150 "parameter '%s':\n%s") |
|
151 % (section, name, inst)) |
148 if self.parentui is None: |
152 if self.parentui is None: |
149 return default |
153 return default |
150 else: |
154 else: |
151 return self.parentui.configbool(section, name, default) |
155 return self.parentui.configbool(section, name, default) |
152 |
156 |
160 items = dict(self.parentui.configitems(section)) |
164 items = dict(self.parentui.configitems(section)) |
161 if self.cdata.has_section(section): |
165 if self.cdata.has_section(section): |
162 try: |
166 try: |
163 items.update(dict(self.cdata.items(section))) |
167 items.update(dict(self.cdata.items(section))) |
164 except ConfigParser.InterpolationError, inst: |
168 except ConfigParser.InterpolationError, inst: |
165 raise util.Abort(_("Error in configuration:\n%s") % inst) |
169 raise util.Abort(_("Error in configuration section [%s]:\n%s") |
|
170 % (section, inst)) |
166 x = items.items() |
171 x = items.items() |
167 x.sort() |
172 x.sort() |
168 return x |
173 return x |
169 |
174 |
170 def walkconfig(self, seen=None): |
175 def walkconfig(self, seen=None): |
172 seen = {} |
177 seen = {} |
173 for (section, name), value in self.overlay.iteritems(): |
178 for (section, name), value in self.overlay.iteritems(): |
174 yield section, name, value |
179 yield section, name, value |
175 seen[section, name] = 1 |
180 seen[section, name] = 1 |
176 for section in self.cdata.sections(): |
181 for section in self.cdata.sections(): |
177 for name, value in self.cdata.items(section): |
182 try: |
178 if (section, name) in seen: continue |
183 for name, value in self.cdata.items(section): |
179 yield section, name, value.replace('\n', '\\n') |
184 if (section, name) in seen: continue |
180 seen[section, name] = 1 |
185 yield section, name, value.replace('\n', '\\n') |
|
186 seen[section, name] = 1 |
|
187 except ConfigParser.InterpolationError, inst: |
|
188 raise util.Abort(_("Error in configuration section [%s]:\n%s") |
|
189 % (section, inst)) |
181 if self.parentui is not None: |
190 if self.parentui is not None: |
182 for parent in self.parentui.walkconfig(seen): |
191 for parent in self.parentui.walkconfig(seen): |
183 yield parent |
192 yield parent |
184 |
193 |
185 def extensions(self): |
194 def extensions(self): |