telescope-frecency.nvim/lua/frecency/recency.lua
Mr.Z 08a28ec511
feat(recency_values): customize recency_values (#190)
Co-authored-by: zhaogang <zhaogang@dustess.com>
2024-04-06 20:49:45 +09:00

32 lines
706 B
Lua

local config = require "frecency.config"
---@class FrecencyRecency
---@field private modifier table<integer, { age: integer, value: integer }>
local Recency = {}
---@return FrecencyRecency
Recency.new = function()
return setmetatable({
modifier = config.recency_values,
}, { __index = Recency })
end
---@param count integer
---@param ages number[]
---@return number
function Recency:calculate(count, ages)
local score = 0
for _, age in ipairs(ages) do
for _, rank in ipairs(self.modifier) do
if age <= rank.age then
score = score + rank.value
goto continue
end
end
::continue::
end
return count * score / config.max_timestamps
end
return Recency