Index: Source/core/scripts/in_file.py |
diff --git a/Source/core/scripts/in_file.py b/Source/core/scripts/in_file.py |
index fa7106461ae3bb21df9380a6d51cb03decbe20a6..ea5010d1d4e50a60ee2d5d74c29db8d8373e4270 100644 |
--- a/Source/core/scripts/in_file.py |
+++ b/Source/core/scripts/in_file.py |
@@ -53,16 +53,17 @@ def _is_comment(line): |
return line.startswith("//") or line.startswith("#") |
class InFile(object): |
- def __init__(self, lines, defaults, default_parameters): |
+ def __init__(self, lines, defaults, valid_values=None, default_parameters=None): |
self.name_dictionaries = [] |
self.parameters = copy.deepcopy(default_parameters if default_parameters else {}) |
self._defaults = defaults |
+ self._valid_values = copy.deepcopy(valid_values if valid_values else {}) |
self._parse(map(str.strip, lines)) |
@classmethod |
- def load_from_path(self, path, defaults, default_parameters): |
+ def load_from_path(self, path, defaults, valid_values, default_parameters): |
with open(os.path.abspath(path)) as in_file: |
- return InFile(in_file.readlines(), defaults, default_parameters) |
+ return InFile(in_file.readlines(), defaults, valid_values, default_parameters) |
def _is_sequence(self, arg): |
return (not hasattr(arg, "strip") |
@@ -107,6 +108,9 @@ class InFile(object): |
arg_name, arg_value = arg_string, True |
if arg_name not in self._defaults: |
self._fatal("Unknown argument: '%s' in line:\n%s\nKnown arguments: %s" % (arg_name, line, self._defaults.keys())) |
+ valid_values = self._valid_values.get(arg_name) |
+ if valid_values and arg_value not in valid_values: |
+ self._fatal("Unknown value: '%s' in line:\n%s\nKnown values: %s" % (arg_value, line, valid_values)) |
if self._is_sequence(args[arg_name]): |
args[arg_name].append(arg_value) |
else: |