1- local nodeData = require (" java-deps.java.nodeData" )
2- local NodeKind = nodeData .NodeKind
3- local INodeData = nodeData .INodeData
1+ local _n = require (" java-deps.java.nodeData" )
2+ local NodeKind = _n .NodeKind
3+ local INodeData = _n .INodeData
4+ local M = {}
45
56--- @class HierarchicalPackageNodeData : INodeData
67--- @field displayName string
78--- @field name string
89--- @field nodeData ? INodeData
910--- @field children HierarchicalPackageNodeData[]
10- local HieararchicalPackageNodeData = nodeData . INodeData :new ()
11- HieararchicalPackageNodeData .__index = HieararchicalPackageNodeData
11+ local HierarchicalPackageNodeData = INodeData :new ()
12+ HierarchicalPackageNodeData .__index = HierarchicalPackageNodeData
1213
1314--- @param displayName string
1415--- @param parentName ? string
15- function HieararchicalPackageNodeData :new (displayName , parentName )
16+ --- @return HierarchicalPackageNodeData
17+ function HierarchicalPackageNodeData :new (displayName , parentName )
1618 local name = (parentName == nil or parentName == " " ) and displayName or parentName .. " ." .. displayName
17- local base = INodeData : new ()
18- base . displayName = displayName
19- base . name = name
20- base . children = {}
21- return setmetatable ( base , self )
19+ return setmetatable ({
20+ displayName = displayName ,
21+ name = name ,
22+ children = {},
23+ } , self )
2224end
2325
24- function HieararchicalPackageNodeData :compressTree ()
26+ function HierarchicalPackageNodeData :compressTree ()
2527 while self .name ~= " " and # self .children == 1 and not self :isPackage () do
2628 local child = self .children [1 ]
2729 self .name = self .name .. " ." .. child .displayName
@@ -35,9 +37,10 @@ function HieararchicalPackageNodeData:compressTree()
3537end
3638--- @param packages string[]
3739--- @param _nodeData INodeData
38- function HieararchicalPackageNodeData :addSubPackage (packages , _nodeData )
40+ function HierarchicalPackageNodeData :addSubPackage (packages , _nodeData )
3941 if # packages == 0 then
4042 self .nodeData = _nodeData
43+ -- TODO
4144 return
4245 end
4346 local subPackageDisplayName = table.remove (packages , 1 )
@@ -51,32 +54,45 @@ function HieararchicalPackageNodeData:addSubPackage(packages, _nodeData)
5154 if childNode then
5255 childNode :addSubPackage (packages , _nodeData )
5356 else
54- local newNode = HieararchicalPackageNodeData :new (subPackageDisplayName , self .name )
57+ local newNode = HierarchicalPackageNodeData :new (subPackageDisplayName , self .name )
5558 newNode :addSubPackage (packages , _nodeData )
5659 table.insert (self .children , newNode )
5760 end
5861end
59- function HieararchicalPackageNodeData : getUri ()
62+ function HierarchicalPackageNodeData : get_getUri ()
6063 return self .nodeData and self .nodeData .uri
6164end
62- function HieararchicalPackageNodeData : moduleName ()
65+ function HierarchicalPackageNodeData : get_moduleName ()
6366 return self .nodeData and self .nodeData .moduleName
6467end
6568
66- function HieararchicalPackageNodeData : path ()
69+ function HierarchicalPackageNodeData : get_path ()
6770 return self .nodeData and self .nodeData .path
6871end
6972
70- function HieararchicalPackageNodeData : kind ()
73+ function HierarchicalPackageNodeData : get_kind ()
7174 return self .nodeData and self .nodeData .kind or NodeKind .Package
7275end
7376
74- function HieararchicalPackageNodeData :isPackage ()
77+ function HierarchicalPackageNodeData :isPackage ()
7578 return self .nodeData ~= nil
7679end
7780
78- function HieararchicalPackageNodeData :handlerIdentifier ()
81+ function HierarchicalPackageNodeData :handlerIdentifier ()
7982 return self .nodeData and self .nodeData .handlerIdentifier
8083end
84+ M .HierarchicalPackageNodeData = HierarchicalPackageNodeData
8185
82- return HieararchicalPackageNodeData
86+ --- @param packageList INodeData[]
87+ --- @return HierarchicalPackageNodeData
88+ M .createHierarchicalNodeDataByPackageList = function (packageList )
89+ local result = HierarchicalPackageNodeData :new (" " , " " )
90+ for _ , nodeData in ipairs (packageList ) do
91+ local packages = vim .split (nodeData .name , " %." )
92+ result :addSubPackage (packages , nodeData )
93+ end
94+ result :compressTree ()
95+ return result
96+ end
97+
98+ return M
0 commit comments