diff --git a/python/core/__init__.py b/python/core/__init__.py index f0ff94e110c..1f9468b9db8 100644 --- a/python/core/__init__.py +++ b/python/core/__init__.py @@ -112,7 +112,7 @@ def register_function(function, arg_count, group, usesgeometry=False, helptemplate = string.Template("""

$name function


$doc""") name = kwargs.get('name', function.__name__) - helptext = function.__doc__ or '' + helptext = kwargs.get('helpText') or function.__doc__ or '' helptext = helptext.strip() expandargs = False diff --git a/tests/src/python/test_qgsexpression.py b/tests/src/python/test_qgsexpression.py index 67efbd99762..af318eef797 100644 --- a/tests/src/python/test_qgsexpression.py +++ b/tests/src/python/test_qgsexpression.py @@ -43,6 +43,18 @@ class TestQgsExpressionCustomFunctions(unittest.TestCase): def sqrt(values, feature, parent): pass + @qgsfunction(1, 'testing', register=False) + def help_with_docstring(values, feature, parent): + """The help comes from the python docstring.""" + pass + + help_text = 'The help comes from a variable.' + + @qgsfunction(1, 'testing', register=False, helpText=help_text) + def help_with_variable(values, feature, parent): + """This docstring is not used for the help.""" + pass + @qgsfunction(1, 'testing', register=False, usesgeometry=True) def geomtest(values, feature, parent): pass @@ -68,6 +80,17 @@ class TestQgsExpressionCustomFunctions(unittest.TestCase): args = function.params() self.assertEqual(args, 3) + def testHelp(self): + QgsExpression.registerFunction(self.help_with_variable) + html = ('

help_with_variable function


' + 'The help comes from a variable.') + self.assertEqual(self.help_with_variable.helpText(), html) + + QgsExpression.registerFunction(self.help_with_docstring) + html = ('

help_with_docstring function


' + 'The help comes from the python docstring.') + self.assertEqual(self.help_with_docstring.helpText(), html) + def testAutoArgsAreExpanded(self): function = self.expandargs args = function.params()