[FEATURE] Add join and strip string functions to scripting
This commit is contained in:
parent
dfcbadb69d
commit
b8dc68fb08
2 changed files with 53 additions and 0 deletions
|
|
@ -176,3 +176,40 @@ class StringFunctions:
|
|||
# World
|
||||
"""
|
||||
return String(string.value.encode("utf-8").decode("unicode_escape"))
|
||||
|
||||
@staticmethod
|
||||
def join(separator: String, array: Array) -> String:
|
||||
"""
|
||||
:description:
|
||||
Join all elements in the array together as a string, and insert the separator between them.
|
||||
|
||||
:usage:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
{
|
||||
%join( ", ", ["item1", "item2"] )
|
||||
}
|
||||
|
||||
# "item1, item2"
|
||||
"""
|
||||
|
||||
return String(separator.value.join(str(val) for val in array.value))
|
||||
|
||||
@staticmethod
|
||||
def strip(string: String) -> String:
|
||||
"""
|
||||
:description:
|
||||
Strip a string of all its whitespace at the beginning and end.
|
||||
|
||||
:usage:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
{
|
||||
%trim(" delete the outer! ")
|
||||
}
|
||||
|
||||
# "delete the outer!"
|
||||
"""
|
||||
return String(string.value.strip())
|
||||
|
|
@ -152,3 +152,19 @@ class TestNumericFunctions:
|
|||
output = single_variable_output(f"{{%split('{input_string}', {split})}}")
|
||||
|
||||
assert output == expected_output
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"value, expected_output",
|
||||
[("['a', 'b', 'c']", 'a, b, c'), ("['nope', [], {}]", 'nope, [], {}'), ("['a', 1, 3.14, True]", 'a, 1, 3.14, true')],
|
||||
)
|
||||
def test_join(self, value, expected_output):
|
||||
output = single_variable_output(f"{{%join(', ', {value})}}")
|
||||
assert output == expected_output
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"value, expected_output",
|
||||
[(" delete outer ", 'delete outer'), (" delete me\n\n", 'delete me')],
|
||||
)
|
||||
def test_strip(self, value, expected_output):
|
||||
output = single_variable_output(f"{{%strip('{value}')}}")
|
||||
assert output == expected_output
|
||||
Loading…
Reference in a new issue