diff --git a/lua/neogen/configurations/python.lua b/lua/neogen/configurations/python.lua index f74f8f8..7b90d75 100644 --- a/lua/neogen/configurations/python.lua +++ b/lua/neogen/configurations/python.lua @@ -46,13 +46,31 @@ return { retrieve = "first", node_type = "block", subtree = { - { retrieve = "all", node_type = "return_statement", extract = true }, + { + retrieve = "all", + node_type = "return_statement", + recursive = true, + subtree = { + { + retrieve = "all", + node_type = "true|false|integer|binary_operator", + as = "anonymous_return", + extract = true, + }, + { + retrieve = "all", + node_type = "identifier", + as = "return_statement", + extract = true, + }, + }, + }, }, }, { retrieve = "all", node_type = "type", - as = "return_statement", + as = "return_type", extract = true, }, } @@ -71,10 +89,16 @@ return { end local res = neogen.utilities.extractors:extract_from_matched(nodes) + if nodes["anonymous_return"] then + local _res = neogen.utilities.extractors:extract_from_matched(nodes, { type = true }) + results.anonymous_return = _res.anonymous_return + end + results.has_identifier = res.type or res.identifier and { true } or nil results.type = res.type results.parameters = res.identifier - results.return_statement = res.return_statement and { res.return_statement[1] } or nil + results.return_statement = res.return_statement + results.has_return = (res.return_statement or res.anonymous_return) and { true } or nil return results end, }, @@ -188,7 +212,9 @@ return { { "parameters", "\t%s ($1): $1", { type = { "func" } } }, { { "identifier", "type" }, "\t%s (%s): $1", { required = "typed_parameters", type = { "func" } } }, { "attributes", "\t%s: $1", { before_first_item = { "", "Attributes: " } } }, - { "return_statement", "\t$1", { before_first_item = { "", "Returns: " } } }, + { "has_return", "", { type = { "func" } } }, + { "has_return", "Returns:", { type = { "func" } } }, + { "has_return", "\t$1", { type = { "func" } } }, { nil, '"""' }, }, numpydoc = { @@ -203,17 +229,32 @@ return { { nil, '"""$1' }, { "has_identifier", "", { type = { "func" } } }, - { "has_identifier", "Parameters:", { type = { "func" } } }, - { "has_identifier", "-----------", { type = { "func" } } }, + { "has_identifier", "Parameters", { type = { "func" } } }, + { "has_identifier", "----------", { type = { "func" } } }, { "parameters", "%s: $1", - { type = { "func" } }, + { after_each = "\t$1", type = { "func" } }, + }, + { + { "identifier", "type" }, + "%s: %s", + { after_each = "\t$1", required = "typed_parameters", type = { "func" } }, }, - { "parameters", "\t$1", {} }, - { { "identifier", "type" }, "\t%s (%s): $1", { required = "typed_parameters", type = { "func" } } }, { "attributes", "%s: $1", { before_first_item = { "", "Attributes", "----------" } } }, - { "return_statement", "$1", { before_first_item = { "", "Returns", "-------" } } }, + { "has_return", "", { type = { "func" } } }, + { "has_return", "Returns", { type = { "func" } } }, + { "has_return", "-------", { type = { "func" } } }, + { + "return_statement", + "%s : $1", + { after_each = "\t$1" }, + }, + { + "anonymous_return", + "%s", + { after_each = "\t$1" }, + }, { nil, '"""' }, }, },