diff --git a/src/ytdl_sub/script/functions/conditional_functions.py b/src/ytdl_sub/script/functions/conditional_functions.py index 429fdbd5..896ddd59 100644 --- a/src/ytdl_sub/script/functions/conditional_functions.py +++ b/src/ytdl_sub/script/functions/conditional_functions.py @@ -64,6 +64,6 @@ class ConditionalFunctions: otherwise returns ``else_arg``. """ maybe_true_value = maybe_true_arg.value() - if bool(maybe_true_value): + if bool(maybe_true_value.value): return maybe_true_value return else_arg.value() diff --git a/src/ytdl_sub/script/types/function.py b/src/ytdl_sub/script/types/function.py index e167774f..a61fc7d4 100644 --- a/src/ytdl_sub/script/types/function.py +++ b/src/ytdl_sub/script/types/function.py @@ -229,6 +229,8 @@ class BuiltInFunction(Function, BuiltInFunctionType): assert isinstance(lambda_array, Array) + if len(lambda_array.value) == 0: + return Array(value=[]) if len(lambda_array.value) == 1: return lambda_array.value[0] diff --git a/tests/unit/script/types/test_lambda_function.py b/tests/unit/script/types/test_lambda_function.py index b69bc6e3..07105477 100644 --- a/tests/unit/script/types/test_lambda_function.py +++ b/tests/unit/script/types/test_lambda_function.py @@ -15,6 +15,11 @@ class TestLambdaFunction: {"%times_two": "{%mul($0, 2)}", "wip": "{%array_apply([1, 2, 3], %times_two)}"} ).resolve() == ScriptOutput({"wip": Array([Integer(2), Integer(4), Integer(6)])}) + def test_lambda_with_custom_function_empty_input(self): + assert Script( + {"%times_two": "{%mul($0, 2)}", "wip": "{%array_apply([], %times_two)}"} + ).resolve() == ScriptOutput({"wip": Array([])}) + def test_conditional_lambda_with_custom_functions(self): assert Script( {