Модуль:Serialization/TimeSpan: различия между версиями
Материал из Space Station 14 Вики
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 26: | Строка 26: | ||
end | end | ||
-- Форматирование в "X час. Y мин. Z сек." | local function bold(n) | ||
return "<b>" .. tostring(n) .. "</b>" | |||
end | |||
-- Форматирование в "X час. Y мин. Z сек." с жирными числами | |||
local function format_time(value) | local function format_time(value) | ||
local total_seconds = math.floor(value) | local total_seconds = math.floor(value) | ||
| Строка 37: | Строка 41: | ||
if hours > 0 then | if hours > 0 then | ||
table.insert(parts, hours .. " час.") | table.insert(parts, bold(hours) .. " час.") | ||
end | end | ||
if minutes > 0 then | if minutes > 0 then | ||
table.insert(parts, minutes .. " мин.") | table.insert(parts, bold(minutes) .. " мин.") | ||
end | end | ||
if seconds > 0 or #parts == 0 then | if seconds > 0 or #parts == 0 then | ||
table.insert(parts, seconds .. " сек.") | table.insert(parts, bold(seconds) .. " сек.") | ||
end | end | ||
Текущая версия от 20:57, 5 марта 2026
Для документации этого модуля может быть создана страница Модуль:Serialization/TimeSpan/doc
local p = {}
local function parse_timespan(str)
if not str then return 0 end
str = str:match("^%s*(.-)%s*$")
local number = tonumber(str)
if number then return number end
if #str <= 1 then return 0 end
local value = tonumber(str:sub(1, -2))
local unit = str:sub(-1):lower()
if not value then return 0 end
if unit == "s" then
return value
elseif unit == "m" then
return value * 60
elseif unit == "h" then
return value * 3600
else
return 0
end
end
local function bold(n)
return "<b>" .. tostring(n) .. "</b>"
end
-- Форматирование в "X час. Y мин. Z сек." с жирными числами
local function format_time(value)
local total_seconds = math.floor(value)
local hours = math.floor(total_seconds / 3600)
local minutes = math.floor((total_seconds % 3600) / 60)
local seconds = total_seconds % 60
local parts = {}
if hours > 0 then
table.insert(parts, bold(hours) .. " час.")
end
if minutes > 0 then
table.insert(parts, bold(minutes) .. " мин.")
end
if seconds > 0 or #parts == 0 then
table.insert(parts, bold(seconds) .. " сек.")
end
return table.concat(parts, " ")
end
function p.main(frame)
local args = frame.args[1]
local time = parse_timespan(args)
return format_time(time)
end
return p