allow not-defined fields in format strings

... and replace them with "None", for now
This commit is contained in:
Mike Fährmann
2018-02-03 22:28:41 +01:00
parent 6a07e38366
commit aa38eab2be
2 changed files with 10 additions and 0 deletions

View File

@@ -331,6 +331,9 @@ class Formatter():
"""Return value called 'field_name' from 'kwargs'"""
first, rest = _string.formatter_field_name_split(field_name)
if first not in kwargs:
return None
obj = kwargs[first]
for is_attr, i in rest:
if is_attr:

View File

@@ -175,6 +175,13 @@ class TestFormatter(unittest.TestCase):
self._run_test("{name}{title4:?//}", "Name")
self._run_test("{name}{title4:? **/''/}", "Name")
def test_missing(self):
replacement = "None"
self._run_test("{missing}", replacement)
self._run_test("{missing.attr}", replacement)
self._run_test("{missing[key]}", replacement)
self._run_test("{missing?a/b/}", replacement)
def _run_test(self, format_string, result):
formatter = util.Formatter()
output = formatter.vformat(format_string, self.kwdict)