Modul:Height
Tampilan
Dokumentasi untuk modul ini dapat dibuat di Modul:Height/doc
local p = {}
-- Fungsi pembantu untuk membulatkan angka
local function round(val, decimal)
if not val then return nil end
local exp = 10 ^ (decimal or 0)
return math.floor(val * exp + 0.5) / exp
end
function p.main(frame)
local args = frame:getParent().args
-- Mendukung parameter m, cm, ft, in
local m = tonumber(args.m or args[1])
local cm = tonumber(args.cm)
local ft = tonumber(args.ft)
local inches = tonumber(args['in'] or args.inches)
-- Skenario 1: Jika input dalam Meter (m)
if m then
local cmVal = m * 100
local totalInches = cmVal / 2.54
local calcFt = math.floor(totalInches / 12)
local calcIn = round(totalInches % 12, 0)
if calcIn == 12 then
calcFt = calcFt + 1
calcIn = 0
end
-- Format penulisan meter dengan koma (misal: 1,70 m)
local mStr = tostring(m):gsub("%.", ",")
return string.format('%s m <span style="white-space: nowrap;">(%d ft %d in)</span>', mStr, calcFt, calcIn)
-- Skenario 2: Jika input dalam Centimeter (cm)
elseif cm then
local totalInches = cm / 2.54
local calcFt = math.floor(totalInches / 12)
local calcIn = round(totalInches % 12, 0)
if calcIn == 12 then
calcFt = calcFt + 1
calcIn = 0
end
return string.format('%d cm <span style="white-space: nowrap;">(%d ft %d in)</span>', cm, calcFt, calcIn)
-- Skenario 3: Jika input dalam Feet & Inches (ft & in) -> konversi ke Meter
elseif ft and inches then
local totalInches = (ft * 12) + inches
local cmVal = round(totalInches * 2.54, 0)
local mVal = round(cmVal / 100, 2)
local mStr = tostring(mVal):gsub("%.", ",")
return string.format('%s m <span style="white-space: nowrap;">(%d ft %d in)</span>', mStr, ft, inches)
else
return '<span style="color:red; font-weight:bold;">[Nilai Tinggi Salah]</span>'
end
end
return p