fix: proper multibytes chars alignment (#560)

I am 100% did not spoil anything, I swear
This commit is contained in:
elianiva
2021-02-26 20:17:47 +07:00
committed by GitHub
parent e2696d694a
commit d37dc88eab
2 changed files with 10 additions and 4 deletions

View File

@@ -28,13 +28,12 @@ entry_display.create = function(configuration)
local generator = {} local generator = {}
for _, v in ipairs(configuration.items) do for _, v in ipairs(configuration.items) do
if v.width then if v.width then
local justify = not v.right_justify and "-" or "" local justify = v.right_justify
local format_str = "%" .. justify .. v.width .. "s"
table.insert(generator, function(item) table.insert(generator, function(item)
if type(item) == 'table' then if type(item) == 'table' then
return string.format(format_str, entry_display.truncate(item[1], v.width)), item[2] return utils.align_str(entry_display.truncate(item[1], v.width), v.width, justify), item[2]
else else
return string.format(format_str, entry_display.truncate(item, v.width)) return utils.align_str(entry_display.truncate(item, v.width), v.width, justify)
end end
end) end)
else else

View File

@@ -284,4 +284,11 @@ function utils.strcharpart(str, nchar, charlen)
return str:sub(nbyte + 1, nbyte + len) return str:sub(nbyte + 1, nbyte + len)
end end
utils.align_str = function(string, width, right_justify)
local str_len = utils.strdisplaywidth(string)
return right_justify
and string.rep(" ", width - str_len)..string
or string..string.rep(" ", width - str_len)
end
return utils return utils