Module:In5
MyWikiBiz, Author Your Legacy — Tuesday November 12, 2024
Jump to navigationJump to searchThis is a Lua implementation of the {{in5}} template. Please see the template page for documentation.
-- This module implements {{in5}}. 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