Support for optional params in python

This commit is contained in:
Daniel Mathiot
2021-08-23 18:31:22 +02:00
parent 969c0342af
commit 88c4d40078

View File

@@ -16,25 +16,38 @@ return {
local params = neogen.utilities.nodes:matching_child_nodes(node, "parameters")[1] local params = neogen.utilities.nodes:matching_child_nodes(node, "parameters")[1]
local regular_params local found_nodes
local typed_params_node
if #params ~= 0 then if #params ~= 0 then
-- Find regular parameters -- Find regular parameters
regular_params = neogen.utilities.extractors:extract_children_text("identifier")(params) local regular_params = neogen.utilities.extractors:extract_children_text("identifier")(params)
if #regular_params == 0 then if #regular_params == 0 then
regular_params = nil regular_params = nil
end end
results.parameters = regular_params results.parameters = regular_params
-- Find typed params -- Find regular optional parameters
typed_params_node = neogen.utilities.nodes:matching_child_nodes(params, "typed_parameter") found_nodes = neogen.utilities.nodes:matching_child_nodes(params, "default_parameter")
for _,_node in pairs(typed_params_node) do for _,_node in pairs(found_nodes) do
local typed_params = neogen.utilities.extractors:extract_children_text("identifier")(_node)[1] local _params = neogen.utilities.extractors:extract_children_text("identifier")(_node)[1]
table.insert(results.parameters, typed_params) table.insert(results.parameters, _params)
end
-- Find typed params
found_nodes = neogen.utilities.nodes:matching_child_nodes(params, "typed_parameter")
for _,_node in pairs(found_nodes) do
local _params = neogen.utilities.extractors:extract_children_text("identifier")(_node)[1]
table.insert(results.parameters, _params)
end
-- TODO Find optional typed params
found_nodes = neogen.utilities.nodes:matching_child_nodes(params, "typed_default_parameter")
for _,_node in pairs(found_nodes) do
local _params = neogen.utilities.extractors:extract_children_text("identifier")(_node)[1]
table.insert(results.parameters, _params)
end end
-- TODO Find optional params
end end
local body = neogen.utilities.nodes:matching_child_nodes(node, "block")[1] local body = neogen.utilities.nodes:matching_child_nodes(node, "block")[1]
@@ -46,11 +59,9 @@ return {
if #return_statement == 0 then if #return_statement == 0 then
return_statement = nil return_statement = nil
end end
results.return_statement = return_statement
return { return results
parameters = regular_params,
return_statement = return_statement
}
end end
}, },
}, },