Module:In5: Difference between revisions
From Gerald R. Lucas
en>Mr. Stradivarius (better default handling) |
m (1 revision imported) |
(No difference)
|
Latest revision as of 14:27, 19 December 2018
-- This module implements .
local p = {}
function p.in5(frame)
local indent = frame.args[1] -- Trim whitespace and convert to number. Default to 5 if not present, -- as per the template title. indent = tonumber( mw.text.trim(indent) ) or 5 -- Round down to nearest integer. Decimal values produce funky results -- from the original template, but there's no need for us to replicate that. indent = math.floor( indent ) -- Don't output anything for zero or less. Again, there was some funky output -- here for negatives, but now we're in Lua we should use sane defaults. if indent <= 0 then return end local base = ' ' local modulo = ' '
--[[
Indent values and the corresponding values for base and modulo:
indent base modulo 1 0 1 2 0 2 3 1 1 4 1 2 5 2 1 6 2 2 7 3 1 8 3 2 9 4 1 10 4 2
]]
local baseNum = math.floor( (indent - 1) / 2 ) local modNum = math.fmod( indent - 1 , 2 ) + 1 return mw.ustring.rep( base, baseNum) .. mw.ustring.rep( modulo, modNum )
end
return p