typechecked optargs constructors for Sorter

This commit is contained in:
Alexander Courtis
2024-11-06 17:07:08 +11:00
parent b2f7b9a876
commit 692fff7745
4 changed files with 36 additions and 39 deletions

View File

@@ -17,7 +17,7 @@ local NodeIterator = require("nvim-tree.iterators.node-iterator")
local Filters = require("nvim-tree.explorer.filters")
local Marks = require("nvim-tree.marks")
local LiveFilter = require("nvim-tree.explorer.live-filter")
local Sorters = require("nvim-tree.explorer.sorters")
local Sorter = require("nvim-tree.explorer.sorter")
local Clipboard = require("nvim-tree.actions.fs.clipboard")
local Renderer = require("nvim-tree.renderer")
@@ -57,7 +57,7 @@ function Explorer:new(args)
self.open = true
self.opts = config
self.sorters = Sorters:create(config)
self.sorters = Sorter(config)
self.renderer = Renderer:new(config, self)
self.filters = Filters:new(config, self)
self.live_filter = LiveFilter:new(config, self)

View File

@@ -1,4 +1,4 @@
local Class = require("nvim-tree.class")
local Class = require("nvim-tree.classic")
local DirectoryNode = require("nvim-tree.node.directory")
local C = {}
@@ -12,23 +12,20 @@ local C = {}
---@field cfg SorterCfg
---@field user fun(nodes: Node[])?
---@field pre string?
local Sorter = Class:new()
local Sorter = Class:extend()
---@class Sorter
---@overload fun(opts: table): Sorter
---@param opts table user options
---@return Sorter
function Sorter:create(opts)
---@type Sorter
local o = {
cfg = vim.deepcopy(opts.sort),
}
o = self:new(o)
function Sorter:new(opts)
self.cfg = vim.deepcopy(opts.sort)
if type(o.cfg.sorter) == "function" then
o.user = o.cfg.sorter --[[@as fun(nodes: Node[])]]
elseif type(o.cfg.sorter) == "string" then
o.pre = o.cfg.sorter --[[@as string]]
if type(self.cfg.sorter) == "function" then
self.user = self.cfg.sorter --[[@as fun(nodes: Node[])]]
elseif type(self.cfg.sorter) == "string" then
self.pre = self.cfg.sorter --[[@as string]]
end
return o
end
--- Predefined comparator, defaulting to name