diff --git a/picard/script.py b/picard/script.py index 822a8f9aa..24c89b1bf 100644 --- a/picard/script.py +++ b/picard/script.py @@ -1045,9 +1045,12 @@ def func_find(parser, haystack, needle): needle: The substring to find. Returns: - The zero-based index of the first occurrance of needle in haystack, or -1 if needle was not found. + The zero-based index of the first occurrence of needle in haystack, or "" if needle was not found. """ - return str(haystack.find(needle)) + index = haystack.find(needle) + if index < 0: + return '' + return str(index) @script_function() diff --git a/test/test_script.py b/test/test_script.py index af5cb2cfc..6ac4033b7 100644 --- a/test/test_script.py +++ b/test/test_script.py @@ -852,27 +852,27 @@ class ScriptParserTest(PicardTestCase): self.assertScriptResultEquals("$find(%bar%,%baz%)", "9", context) self.assertScriptResultEquals("$find(%foo%,%bar%)", "0", context) self.assertScriptResultEquals("$find(%bar%,%foo%)", "0", context) - self.assertScriptResultEquals("$find(%foo%,%err%)", "-1", context) + self.assertScriptResultEquals("$find(%foo%,%err%)", "", context) # Tests with static input self.assertScriptResultEquals("$find(abcdef,c)", "2", context) self.assertScriptResultEquals("$find(abcdef,cd)", "2", context) - self.assertScriptResultEquals("$find(abcdef,g)", "-1", context) + self.assertScriptResultEquals("$find(abcdef,g)", "", context) # Tests ends of string self.assertScriptResultEquals("$find(abcdef,a)", "0", context) self.assertScriptResultEquals("$find(abcdef,ab)", "0", context) self.assertScriptResultEquals("$find(abcdef,f)", "5", context) self.assertScriptResultEquals("$find(abcdef,ef)", "4", context) # Tests case sensitivity - self.assertScriptResultEquals("$find(abcdef,C)", "-1", context) + self.assertScriptResultEquals("$find(abcdef,C)", "", context) # Tests no characters processed as wildcards - self.assertScriptResultEquals("$find(abcdef,.f)", "-1", context) - self.assertScriptResultEquals("$find(abcdef,?f)", "-1", context) - self.assertScriptResultEquals("$find(abcdef,*f)", "-1", context) - self.assertScriptResultEquals("$find(abc.ef,cde)", "-1", context) - self.assertScriptResultEquals("$find(abc?ef,cde)", "-1", context) - self.assertScriptResultEquals("$find(abc*ef,cde)", "-1", context) + self.assertScriptResultEquals("$find(abcdef,.f)", "", context) + self.assertScriptResultEquals("$find(abcdef,?f)", "", context) + self.assertScriptResultEquals("$find(abcdef,*f)", "", context) + self.assertScriptResultEquals("$find(abc.ef,cde)", "", context) + self.assertScriptResultEquals("$find(abc?ef,cde)", "", context) + self.assertScriptResultEquals("$find(abc*ef,cde)", "", context) # Tests missing inputs - self.assertScriptResultEquals("$find(,c)", "-1", context) + self.assertScriptResultEquals("$find(,c)", "", context) self.assertScriptResultEquals("$find(abcdef,)", "0", context) # Tests wrong number of arguments areg = r"^Wrong number of arguments for \$find: Expected exactly 2, "