Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:Outdent

Permanently protected module
From Wikipedia, the free encyclopedia

local p = {}
local getArgs = require('Module:Arguments').getArgs

function p.outdent (frame) 
	local args = getArgs(frame)
	local width = 0
	
	local reversed = args['reverse'] or args['indent'] or args['r'] or args['in']	-- aliases for reverse
	if not args[1] then args[1] = '' end                                        -- un-nil args[1]
	
	width = width + select(2, string.gsub(args[1],':',''))						-- increase by 1 for every :
	width = width + select(2, string.gsub(args[1],'*',''))						-- increase by 1 for every *
	width = width + select(2, string.gsub(args[1],'#','')) * 2					-- increase by 2 for every #
	
	if width == 0 then width = tonumber(args[1]) end							-- set width to args[1] if needed

	if not width then width = 10 end											-- default width
	if width < 0
	then
		width = -width
		reversed = not reversed
	end
	if width > 40 then width = 40 end											-- max width
	
	width = width * 1.6															-- set width to proper width
	
	local top = '<span style="display:block;width:' .. width .. 'em;height:0.5em;' .. (width == 0 and '' or 'border-bottom:1px solid #a2a9b1;') .. 'border-' .. ((width == 0 or reversed) and 'left' or 'right') ..':1px solid #a2a9b1;"></span>' -- top half
	local bottom = '<span style="display:block;width:' .. width .. 'em;height:0.5em;border-' .. (reversed and 'right' or 'left') .. ':1px solid #a2a9b1;"></span>' -- bottom half
	local note = args[2] and '<span>([[Wikipedia:Indentation#Outdenting|outdent]])&#32;</span>' or '' -- note
	
	return '<div class="outdent-template" style="position:relative;left:1px;">' .. top .. bottom .. note .. '</div>';
end

return p