allow not-defined fields in format strings
... and replace them with "None", for now
This commit is contained in:
@@ -331,6 +331,9 @@ class Formatter():
|
|||||||
"""Return value called 'field_name' from 'kwargs'"""
|
"""Return value called 'field_name' from 'kwargs'"""
|
||||||
first, rest = _string.formatter_field_name_split(field_name)
|
first, rest = _string.formatter_field_name_split(field_name)
|
||||||
|
|
||||||
|
if first not in kwargs:
|
||||||
|
return None
|
||||||
|
|
||||||
obj = kwargs[first]
|
obj = kwargs[first]
|
||||||
for is_attr, i in rest:
|
for is_attr, i in rest:
|
||||||
if is_attr:
|
if is_attr:
|
||||||
|
|||||||
@@ -175,6 +175,13 @@ class TestFormatter(unittest.TestCase):
|
|||||||
self._run_test("{name}{title4:?//}", "Name")
|
self._run_test("{name}{title4:?//}", "Name")
|
||||||
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):
|
def _run_test(self, format_string, result):
|
||||||
formatter = util.Formatter()
|
formatter = util.Formatter()
|
||||||
output = formatter.vformat(format_string, self.kwdict)
|
output = formatter.vformat(format_string, self.kwdict)
|
||||||
|
|||||||
Reference in New Issue
Block a user