Skip to content

Commit c02c98b

Browse files
committed
extract node factory, remove unused code
1 parent bf307e9 commit c02c98b

File tree

2 files changed

+37
-25
lines changed

2 files changed

+37
-25
lines changed

lua/nvim-tree/explorer/init.lua

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@ local log = require "nvim-tree.log"
33
local notify = require "nvim-tree.notify"
44
local utils = require "nvim-tree.utils"
55
local view = require "nvim-tree.view"
6+
local node_factory = require "nvim-tree.node.factory"
67

78
local BaseNode = require "nvim-tree.node"
89
local DirectoryNode = require "nvim-tree.node.directory"
9-
local FileNode = require "nvim-tree.node.file"
10-
local LinkNode = require "nvim-tree.node.link"
1110
local Watcher = require "nvim-tree.watcher"
1211

1312
local Iterator = require "nvim-tree.iterators.node-iterator"
@@ -147,17 +146,7 @@ function Explorer:reload(node, git_status)
147146
end
148147

149148
if not nodes_by_path[abs] then
150-
local new_child = nil
151-
if t == "directory" and vim.loop.fs_access(abs, "R") and Watcher.is_fs_event_capable(abs) then
152-
new_child = DirectoryNode:new(self, node, abs, name, stat)
153-
elseif t == "file" then
154-
new_child = FileNode:new(self, node, abs, name, stat)
155-
elseif t == "link" then
156-
local link = LinkNode:new(self, node, abs, name, stat)
157-
if link.link_to ~= nil then
158-
new_child = link
159-
end
160-
end
149+
local new_child = node_factory.create_node(self, node, abs, stat, name)
161150
if new_child then
162151
table.insert(node.nodes, new_child)
163152
nodes_by_path[abs] = new_child
@@ -348,7 +337,7 @@ function Explorer:populate_children(handle, cwd, node, git_status, parent)
348337
})
349338

350339
while true do
351-
local name, t = vim.loop.fs_scandir_next(handle)
340+
local name, _ = vim.loop.fs_scandir_next(handle)
352341
if not name then
353342
break
354343
end
@@ -362,17 +351,7 @@ function Explorer:populate_children(handle, cwd, node, git_status, parent)
362351
local stat = vim.loop.fs_stat(abs)
363352
local filter_reason = parent.filters:should_filter_as_reason(abs, stat, filter_status)
364353
if filter_reason == FILTER_REASON.none and not nodes_by_path[abs] then
365-
local child = nil
366-
if t == "directory" and vim.loop.fs_access(abs, "R") then
367-
child = DirectoryNode:new(self, node, abs, name, stat)
368-
elseif t == "file" then
369-
child = FileNode:new(self, node, abs, name, stat)
370-
elseif t == "link" then
371-
local link = LinkNode:new(self, node, abs, name, stat)
372-
if link.link_to ~= nil then
373-
child = link
374-
end
375-
end
354+
local child = node_factory.create_node(self, node, abs, stat, name)
376355
if child then
377356
table.insert(node.nodes, child)
378357
nodes_by_path[child.absolute_path] = true

lua/nvim-tree/node/factory.lua

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
local DirectoryNode = require "nvim-tree.node.directory"
2+
local LinkNode = require "nvim-tree.node.link"
3+
local FileNode = require "nvim-tree.node.file"
4+
local Watcher = require "nvim-tree.watcher"
5+
6+
local M = {}
7+
8+
---@param explorer Explorer
9+
-----@param parent DirectoryNode -- TODO #2871 #2886
10+
---@param abs string
11+
---@param stat uv.fs_stat.result|nil
12+
---@param name string
13+
---@return Node|nil
14+
function M.create_node(explorer, parent, abs, stat, name)
15+
if not stat then
16+
return nil
17+
end
18+
19+
if stat.type == "directory" and vim.loop.fs_access(abs, "R") and Watcher.is_fs_event_capable(abs) then
20+
return DirectoryNode:new(explorer, parent, abs, name, stat)
21+
elseif stat.type == "file" then
22+
return FileNode:new(explorer, parent, abs, name, stat)
23+
elseif stat.type == "link" then
24+
local link = LinkNode:new(explorer, parent, abs, name, stat)
25+
if link.link_to ~= nil then
26+
return link
27+
end
28+
end
29+
30+
return nil
31+
end
32+
33+
return M

0 commit comments

Comments
 (0)