[formatter] add 'L' conversion
to map ISO 639-1 language codes to their full names
This commit is contained in:
@@ -116,6 +116,12 @@ Conversion specifiers allow to *convert* the value to a different form or type.
|
|||||||
<td><code>{tags!j}</code></td>
|
<td><code>{tags!j}</code></td>
|
||||||
<td><code>["sun", "tree", "water"]</code></td>
|
<td><code>["sun", "tree", "water"]</code></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center"><code>L</code></td>
|
||||||
|
<td>Convert an <a href="https://en.wikipedia.org/wiki/ISO_639-1">ISO 639-1</a> language code to its full name</td>
|
||||||
|
<td><code>{lang!L}</code></td>
|
||||||
|
<td><code>English</code></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center"><code>n</code></td>
|
<td align="center"><code>n</code></td>
|
||||||
<td>Return the <a href="https://docs.python.org/3/library/functions.html#len" rel="nofollow">length</a> of a value</td>
|
<td>Return the <a href="https://docs.python.org/3/library/functions.html#len" rel="nofollow">length</a> of a value</td>
|
||||||
|
|||||||
@@ -485,6 +485,7 @@ _CONVERSIONS = {
|
|||||||
"j": util.json_dumps,
|
"j": util.json_dumps,
|
||||||
"t": str.strip,
|
"t": str.strip,
|
||||||
"n": len,
|
"n": len,
|
||||||
|
"L": util.code_to_language,
|
||||||
"T": util.datetime_to_timestamp_string,
|
"T": util.datetime_to_timestamp_string,
|
||||||
"d": text.parse_timestamp,
|
"d": text.parse_timestamp,
|
||||||
"D": util.to_datetime,
|
"D": util.to_datetime,
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ class TestFormatter(unittest.TestCase):
|
|||||||
"dt_dst": datetime.datetime(2010, 6, 1),
|
"dt_dst": datetime.datetime(2010, 6, 1),
|
||||||
"i_str": "12345",
|
"i_str": "12345",
|
||||||
"f_str": "12.45",
|
"f_str": "12.45",
|
||||||
|
"lang": "en",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"title1": "Title",
|
"title1": "Title",
|
||||||
"title2": "",
|
"title2": "",
|
||||||
@@ -73,6 +74,9 @@ class TestFormatter(unittest.TestCase):
|
|||||||
self._run_test("{l!j}", '["a","b","c"]')
|
self._run_test("{l!j}", '["a","b","c"]')
|
||||||
self._run_test("{dt!j}", '"2010-01-01 00:00:00"')
|
self._run_test("{dt!j}", '"2010-01-01 00:00:00"')
|
||||||
self._run_test("{a!g}", "hello-world")
|
self._run_test("{a!g}", "hello-world")
|
||||||
|
self._run_test("{lang!L}", "English")
|
||||||
|
self._run_test("{'fr'!L}", "French")
|
||||||
|
self._run_test("{a!L}", None)
|
||||||
self._run_test("{a!n}", 11)
|
self._run_test("{a!n}", 11)
|
||||||
self._run_test("{l!n}", 3)
|
self._run_test("{l!n}", 3)
|
||||||
self._run_test("{d!n}", 3)
|
self._run_test("{d!n}", 3)
|
||||||
@@ -490,10 +494,10 @@ def noarg():
|
|||||||
fmt4 = formatter.parse("\fM " + path + ":lengths")
|
fmt4 = formatter.parse("\fM " + path + ":lengths")
|
||||||
|
|
||||||
self.assertEqual(fmt1.format_map(self.kwdict), "'Title' by Name")
|
self.assertEqual(fmt1.format_map(self.kwdict), "'Title' by Name")
|
||||||
self.assertEqual(fmt2.format_map(self.kwdict), "137")
|
self.assertEqual(fmt2.format_map(self.kwdict), "139")
|
||||||
|
|
||||||
self.assertEqual(fmt3.format_map(self.kwdict), "'Title' by Name")
|
self.assertEqual(fmt3.format_map(self.kwdict), "'Title' by Name")
|
||||||
self.assertEqual(fmt4.format_map(self.kwdict), "137")
|
self.assertEqual(fmt4.format_map(self.kwdict), "139")
|
||||||
|
|
||||||
with self.assertRaises(TypeError):
|
with self.assertRaises(TypeError):
|
||||||
self.assertEqual(fmt0.format_map(self.kwdict), "")
|
self.assertEqual(fmt0.format_map(self.kwdict), "")
|
||||||
|
|||||||
Reference in New Issue
Block a user