Skip to content

Commit 3fba3ac

Browse files
committed
[processing] Quote and escape script exported ParameterString
1 parent 55e3ea0 commit 3fba3ac

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

python/plugins/processing/core/parameters.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1191,7 +1191,7 @@ def getAsScriptCode(self):
11911191
if self.optional:
11921192
param_type += 'optional '
11931193
param_type += 'string '
1194-
return '##' + self.name + '=' + param_type + str(self.default)
1194+
return '##' + self.name + '=' + param_type + repr(self.default)
11951195

11961196
@classmethod
11971197
def fromScriptCode(self, line):
@@ -1201,6 +1201,8 @@ def fromScriptCode(self, line):
12011201
default = definition.strip()[len('string') + 1:] or None
12021202
if default == 'None':
12031203
default = None
1204+
elif default.startswith('"') or default.startswith('\''):
1205+
default = eval(default)
12041206
if default:
12051207
return ParameterString(name, descName, default, optional=isOptional)
12061208
else:

python/plugins/processing/tests/ParametersTest.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -593,12 +593,29 @@ def testScriptCode(self):
593593
code = parameter.getAsScriptCode()
594594
result = getParameterFromString(code)
595595
self.assertIsInstance(result, ParameterString)
596+
self.assertEqual(result.default, parameter.default)
596597

598+
parameter.default = None
597599
parameter.optional = True
598600
code = parameter.getAsScriptCode()
599601
result = getParameterFromString(code)
600602
self.assertIsInstance(result, ParameterString)
601603
self.assertTrue(result.optional)
604+
self.assertEqual(result.default, parameter.default)
605+
606+
parameter.default = 'None'
607+
code = parameter.getAsScriptCode()
608+
result = getParameterFromString(code)
609+
self.assertIsInstance(result, ParameterString)
610+
self.assertTrue(result.optional)
611+
self.assertEqual(result.default, parameter.default)
612+
613+
parameter.default = 'It\'s Mario'
614+
code = parameter.getAsScriptCode()
615+
result = getParameterFromString(code)
616+
self.assertIsInstance(result, ParameterString)
617+
self.assertTrue(result.optional)
618+
self.assertEqual(result.default, parameter.default)
602619

603620

604621
class ParameterExpressionTest(unittest.TestCase):

0 commit comments

Comments
 (0)