yazi/yazi-plugin/preset/ya.lua

59 lines
1.0 KiB
Lua
Raw Normal View History

2023-10-18 04:39:03 +03:00
table.unpack = table.unpack or unpack
ya = ya or {}
2023-10-11 19:09:10 +03:00
function ya.clamp(min, x, max)
if x < min then
return min
elseif x > max then
return max
else
return x
end
end
function ya.round(x) return x >= 0 and math.floor(x + 0.5) or math.ceil(x - 0.5) end
function ya.list_merge(a, b)
for _, v in ipairs(b) do
a[#a + 1] = v
end
return a
end
function ya.dict_merge(a, b)
for k, v in pairs(b) do
a[k] = v
end
return a
end
2023-10-11 19:09:10 +03:00
function ya.readable_size(size)
local units = { "B", "K", "M", "G", "T", "P", "E", "Z", "Y", "R", "Q" }
2023-10-11 19:09:10 +03:00
local i = 1
while size > 1024.0 and i < #units do
size = size / 1024.0
i = i + 1
end
return string.format("%.1f%s", size, units[i])
2023-10-11 19:09:10 +03:00
end
function ya.readable_path(path)
local home = os.getenv("HOME") or os.getenv("USERPROFILE")
if not home then
2023-10-11 19:09:10 +03:00
return path
elseif path:sub(1, #home) == home then
return "~" .. path:sub(#home + 1)
2023-10-11 19:09:10 +03:00
else
return path
end
end
function ya.child_at(position, children)
for i = #children, 1, -1 do
if children[i]._area:contains(position) then
return children[i]
end
end
end