Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:TrackInfobox

From Trackmania Wiki
Revision as of 12:51, 14 August 2025 by Skycrafter (talk | contribs)

Documentation for this module may be created at Module:TrackInfobox/doc

local p = {}

local function escape_html(s)
  if s == nil then return '' end
  s = tostring(s)
  s = s:gsub("&", "&")
  s = s:gsub("<", "&lt;")
  s = s:gsub(">", "&gt;")
  s = s:gsub('"', "&quot;")
  s = s:gsub("'", "&#39;")
  return s
end

function p.formatWR(frame)
  local time_ms = frame.args[1] or ''
  local player = frame.args[2] or ''
  local fallback = frame.args[3] or ''

  if time_ms == '' or time_ms == nil then
    if fallback ~= '' then return fallback end
    return 'Unknown'
  end

  local ms = tonumber(time_ms)
  if not ms then
    if fallback ~= '' then return fallback end
    return 'Unknown'
  end

  local total_seconds = ms / 1000
  local mins = math.floor(total_seconds / 60)
  local secs = total_seconds - mins * 60
  local time_str = string.format("%d:%06.3f", mins, secs)

  if player ~= '' then
    return time_str .. ' by ' .. escape_html(player)
  else
    return time_str
  end
end

return p