ref: Code refactoring

- Try to not expose as much commands and code via neogen
- Use minidoc to generate docgen
This commit is contained in:
danymat
2022-01-26 11:28:03 +01:00
parent c575186ff9
commit 57e76c6102
19 changed files with 297 additions and 129 deletions

View File

@@ -1,3 +1,7 @@
local extractors = require("neogen.utilities.extractors")
local nodes_utils = require("neogen.utilities.nodes")
local default_locator = require("neogen.locators.default")
local c_params = {
retrieve = "first",
node_type = "parameter_list",
@@ -64,12 +68,12 @@ local c_function_extractor = function(node)
c_params,
}
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
if nodes.function_declarator then
local subnodes = neogen.utilities.nodes:matching_nodes_from(nodes.function_declarator[1]:parent(), tree)
local subres = neogen.utilities.extractors:extract_from_matched(subnodes)
local subnodes = nodes_utils:matching_nodes_from(nodes.function_declarator[1]:parent(), tree)
local subres = extractors:extract_from_matched(subnodes)
res = vim.tbl_deep_extend("keep", res, subres)
end
@@ -139,7 +143,7 @@ local c_config = {
},
locator = function(node_info, nodes_to_match)
local result = neogen.default_locator(node_info, nodes_to_match)
local result = default_locator(node_info, nodes_to_match)
if not result then
return nil
end
@@ -198,8 +202,8 @@ local cpp_config = {
local tree = {
{ retrieve = "first", node_type = "type_identifier", extract = true },
}
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
return res
end,
},

View File

@@ -1,3 +1,6 @@
local extractors = require("neogen.utilities.extractors")
local nodes_utils = require("neogen.utilities.nodes")
return {
parent = {
func = {
@@ -42,8 +45,8 @@ return {
},
},
}
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
res.identifier = res["_"]
return res
end,
@@ -97,8 +100,8 @@ return {
},
},
}
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
return res
end,
},

View File

@@ -1,3 +1,6 @@
local extractors = require("neogen.utilities.extractors")
local nodes_utils = require("neogen.utilities.nodes")
local function_tree = {
{
retrieve = "first",
@@ -58,8 +61,8 @@ return {
local results = {}
local tree = function_tree
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
if res.throws then
results.throw_statement = res.throws
@@ -77,8 +80,8 @@ return {
local results = {}
local tree = function_tree
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
results.parameters = res.identifier
if res.throws then
@@ -98,8 +101,8 @@ return {
extract = function(node)
local results = {}
local tree = { { retrieve = "all", node_type = "identifier", extract = true } }
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
results.class_name = res.identifier
return results

View File

@@ -1,3 +1,6 @@
local extractors = require("neogen.utilities.extractors")
local nodes_utils = require("neogen.utilities.nodes")
local function_tree = {
{
retrieve = "first",
@@ -37,8 +40,8 @@ return {
extract = function(node)
local results = {}
local tree = function_tree
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
results.parameters = res.identifier
results.return_statement = res.return_statement
@@ -51,8 +54,8 @@ return {
extract = function(node)
local results = {}
local tree = { { retrieve = "all", node_type = "function", subtree = function_tree } }
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
results.parameters = res.identifier
results.return_statement = res.return_statement
@@ -65,8 +68,8 @@ return {
extract = function(node)
local results = {}
local tree = { { retrieve = "all", node_type = "arrow_function", subtree = function_tree } }
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
results.parameters = res.identifier
results.return_statement = res.return_statement

View File

@@ -1,3 +1,6 @@
local extractors = require("neogen.utilities.extractors")
local nodes_utils = require("neogen.utilities.nodes")
local function_extractor = function(node, type)
if not vim.tbl_contains({ "local", "function" }, type) then
error("Incorrect call for function_extractor")
@@ -26,8 +29,8 @@ local function_extractor = function(node, type)
}
end
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
return {
parameters = res.identifier,
@@ -56,7 +59,7 @@ local extract_from_var = function(node)
extract = true,
},
}
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local nodes = nodes_utils:matching_nodes_from(node, tree)
return nodes
end
@@ -93,7 +96,7 @@ return {
["0"] = {
extract = function(node)
local nodes = extract_from_var(node)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local res = extractors:extract_from_matched(nodes)
return {
class_name = res.identifier,
}
@@ -109,7 +112,7 @@ return {
result.type = {}
local nodes = extract_from_var(node)
local res = neogen.utilities.extractors:extract_from_matched(nodes, { type = true })
local res = extractors:extract_from_matched(nodes, { type = true })
-- We asked the extract_from_var function to find the type node at right assignment.
-- We check if it found it, or else will put `any` in the type

View File

@@ -1,3 +1,6 @@
local extractors = require("neogen.utilities.extractors")
local nodes_utils = require("neogen.utilities.nodes")
return {
parent = {
type = { "property_declaration", "const_declaration", "foreach_statement" },
@@ -12,8 +15,8 @@ return {
local tree = {
{ node_type = "property_element", retrieve = "all", extract = true },
}
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
return res
end,
},
@@ -54,8 +57,8 @@ return {
},
},
}
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
return res
end,
},

View File

@@ -1,4 +1,6 @@
local ts_utils = require("nvim-treesitter.ts_utils")
local nodes_utils = require("neogen.utilities.nodes")
local extractors = require("neogen.utilities.extractors")
return {
-- Search for these nodes
@@ -74,7 +76,7 @@ return {
extract = true,
},
}
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local nodes = nodes_utils:matching_nodes_from(node, tree)
if nodes["typed_parameter"] then
results["typed_parameters"] = {}
for _, n in pairs(nodes["typed_parameter"]) do
@@ -82,15 +84,15 @@ return {
{ retrieve = "all", node_type = "identifier", extract = true },
{ retrieve = "all", node_type = "type", extract = true },
}
local typed_parameters = neogen.utilities.nodes:matching_nodes_from(n, type_subtree)
typed_parameters = neogen.utilities.extractors:extract_from_matched(typed_parameters)
local typed_parameters = nodes_utils:matching_nodes_from(n, type_subtree)
typed_parameters = extractors:extract_from_matched(typed_parameters)
table.insert(results["typed_parameters"], typed_parameters)
end
end
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local res = extractors:extract_from_matched(nodes)
if nodes["anonymous_return"] then
local _res = neogen.utilities.extractors:extract_from_matched(nodes, { type = true })
local _res = extractors:extract_from_matched(nodes, { type = true })
results.anonymous_return = _res.anonymous_return
end
@@ -133,7 +135,7 @@ return {
},
}
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local nodes = nodes_utils:matching_nodes_from(node, tree)
if vim.tbl_isempty(nodes) then
return {}

View File

@@ -1,3 +1,6 @@
local extractors = require("neogen.utilities.extractors")
local nodes_utils = require("neogen.utilities.nodes")
return {
parent = {
func = { "function_item", "function_signature_item" },
@@ -29,8 +32,8 @@ return {
},
},
}
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
return res
end,
},
@@ -64,8 +67,8 @@ return {
},
},
}
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
return res
end,
},

View File

@@ -1,3 +1,6 @@
local extractors = require("neogen.utilities.extractors")
local nodes_utils = require("neogen.utilities.nodes")
local construct_type_annotation = function(parameters)
local results = parameters and {} or nil
if parameters then
@@ -6,8 +9,8 @@ local construct_type_annotation = function(parameters)
{ retrieve = "all", node_type = "identifier", extract = true },
{ retrieve = "all", node_type = "type_identifier", recursive = true, extract = true },
}
local typed_parameters = neogen.utilities.nodes:matching_nodes_from(param, subtree)
typed_parameters = neogen.utilities.extractors:extract_from_matched(typed_parameters)
local typed_parameters = nodes_utils:matching_nodes_from(param, subtree)
typed_parameters = extractors:extract_from_matched(typed_parameters)
table.insert(results, typed_parameters)
end
end
@@ -56,8 +59,8 @@ return {
extract = function(node)
local results = {}
local tree = function_tree
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
results.type = construct_type_annotation(nodes.required_parameter)
results.opt_type = construct_type_annotation(nodes.optional_parameter)
@@ -72,8 +75,8 @@ return {
extract = function(node)
local results = {}
local tree = { { retrieve = "all", node_type = "function", subtree = function_tree } }
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
results.type = construct_type_annotation(nodes.type_annotation)
results.opt_type = construct_type_annotation(nodes.optional_parameter)
@@ -88,8 +91,8 @@ return {
extract = function(node)
local results = {}
local tree = { { retrieve = "all", node_type = "arrow_function", subtree = function_tree } }
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local res = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local res = extractors:extract_from_matched(nodes)
results.type = construct_type_annotation(nodes.type_annotation)
results.opt_type = construct_type_annotation(nodes.optional_parameter)
@@ -124,8 +127,8 @@ return {
extract = true,
},
}
local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree)
local results = neogen.utilities.extractors:extract_from_matched(nodes)
local nodes = nodes_utils:matching_nodes_from(node, tree)
local results = extractors:extract_from_matched(nodes)
res.type = results.identifier
return res