diff --git a/picard/script.py b/picard/script.py index b03b3a902..ae457d940 100644 --- a/picard/script.py +++ b/picard/script.py @@ -483,7 +483,11 @@ def func_firstwords(parser, text, length): return text[:length].rsplit(' ', 1)[0] def func_truncate(parser, text, length): - return text[:length].rtrim() + try: + length = int(length) + except ValueError, e: + length = None + return text[:length].rstrip() register_script_function(func_if, "if", eval_args=False) register_script_function(func_if2, "if2", eval_args=False) diff --git a/test/test_script.py b/test/test_script.py index 882192506..2689b9915 100644 --- a/test/test_script.py +++ b/test/test_script.py @@ -132,3 +132,11 @@ class ScriptParserTest(unittest.TestCase): self.failUnlessEqual(self.parser.eval("$lte(10,10)"), "1") self.failUnlessEqual(self.parser.eval("$lte(4,10)"), "1") self.failUnlessEqual(self.parser.eval("$lte(4,6)"), "1") + + def test_cmd_truncate(self): + self.failUnlessEqual(self.parser.eval("$truncate(abcdefg,0)"), "") + self.failUnlessEqual(self.parser.eval("$truncate(abcdefg,7)"), "abcdefg") + self.failUnlessEqual(self.parser.eval("$truncate(abcdefg,3)"), "abc") + self.failUnlessEqual(self.parser.eval("$truncate(abcdefg,10)"), "abcdefg") + self.failUnlessEqual(self.parser.eval("$truncate(abcdefg,)"), "abcdefg") + self.failUnlessEqual(self.parser.eval("$truncate(abcdefg,NaN)"), "abcdefg")