|
@@ -92,22 +92,23 @@ class Template(Node): |
|
|
if showkey is None: |
|
|
if showkey is None: |
|
|
try: |
|
|
try: |
|
|
int(name) |
|
|
int(name) |
|
|
|
|
|
showkey = True |
|
|
except ValueError: |
|
|
except ValueError: |
|
|
showkey = False |
|
|
showkey = False |
|
|
else: |
|
|
|
|
|
showkey = True |
|
|
|
|
|
if not showkey: |
|
|
if not showkey: |
|
|
self._surface_escape(value, "=") |
|
|
self._surface_escape(value, "=") |
|
|
param = Parameter(name, value, showkey) # CONFORM TO FORMATTING CONVENTIONS? |
|
|
param = Parameter(name, value, showkey) # CONFORM TO FORMATTING CONVENTIONS? |
|
|
self.params.append(param) |
|
|
self.params.append(param) |
|
|
return param |
|
|
return param |
|
|
|
|
|
|
|
|
def remove(self, name, keep_field=False): # DON'T MESS UP NUMBERING WITH show_key = False AND keep_field = False |
|
|
|
|
|
|
|
|
def remove(self, name, keep_field=False, force_no_field=False): |
|
|
name = name.strip() if isinstance(name, basestring) else unicode(name) |
|
|
name = name.strip() if isinstance(name, basestring) else unicode(name) |
|
|
for param in self.params: |
|
|
|
|
|
|
|
|
for i, param in enumerate(self.params): |
|
|
if param.name.strip() == name: |
|
|
if param.name.strip() == name: |
|
|
if keep_field: |
|
|
if keep_field: |
|
|
return self._blank_param_value(param.value) |
|
|
return self._blank_param_value(param.value) |
|
|
else: |
|
|
|
|
|
return self.params.remove(param) |
|
|
|
|
|
|
|
|
dependent = [not after.showkey for after in self.params[i+1:]] |
|
|
|
|
|
if any(dependent) and not param.showkey and not force_no_field: |
|
|
|
|
|
return self._blank_param_value(param.value) |
|
|
|
|
|
return self.params.remove(param) |
|
|
raise ValueError(name) |
|
|
raise ValueError(name) |