Difference between revisions of "Module:Gaps"

From blackwiki
Jump to navigation Jump to search
blackwiki>The Mol Man
m (just some touch up)
blackwiki>The Mol Man
(+multiple gap sizes)
Line 17: Line 17:
 
end
 
end
  
 +
local gap = string.lower(args.gap or '')
 +
 +
local gapSize, gapUnit = string.match(gap,'([%d%.]+)%s*([ep][mnx])')
 +
 +
local acceptedUnits = { em = 'em', en = 'en', px = 'px' }
 +
 +
gapUnit = acceptedUnits[gapUnit]
 +
 +
if gapSize and gapUnit then
 +
gap = gapSize..gapUnit
 +
else
 +
gap = '0.2em'
 +
end
 +
 
for k,v in ipairs(args) do
 
for k,v in ipairs(args) do
 
if k == 1 then
 
if k == 1 then
Line 22: Line 36:
 
else
 
else
 
ret:tag('span')
 
ret:tag('span')
:css('margin-left','0.2em')
+
:css('margin-left',gap)
 
:wikitext(v)
 
:wikitext(v)
 
end
 
end

Revision as of 17:06, 28 July 2016

Implements Template:Gaps, which adds a small gap of space with css between every parameter


local p = {}

local getArgs

function p.main(frame)
	if not getArgs then
		getArgs = require('Module:Arguments').getArgs
	end
	local args = getArgs(frame, {wrappers = 'Template:Gaps'})

	local ret = mw.html.create('span')
		:css({['white-space'] = 'nowrap',
				['font-size'] = args.size})

	if args.lhs then
		ret:wikitext(args.lhs .. ' = ')
	end

	local gap = string.lower(args.gap or '')
	
	local gapSize, gapUnit = string.match(gap,'([%d%.]+)%s*([ep][mnx])')
	
	local acceptedUnits = { em = 'em', en = 'en', px = 'px' }
	
	gapUnit = acceptedUnits[gapUnit]
	
	if gapSize and gapUnit then
		gap = gapSize..gapUnit
	else
		gap = '0.2em'
	end
	
	for k,v in ipairs(args) do
		if k == 1 then
			ret:wikitext(v)
		else
			ret:tag('span')
				:css('margin-left',gap)
				:wikitext(v)
		end
	end

	if args.e then
		ret
			:tag('span')
				:css({['margin-left'] = '0.27em',
						['margin-right']= '0.27em'})
				:wikitext('×')
			:done()
			:wikitext(args.base or '10')
			:tag('span')
				:css('display','none')
				:wikitext('^')
			:done()
			:tag('sup')
				-- the double parentheses here are not redundant.
				-- they keep the second return value from being passed
				:wikitext((mw.ustring.gsub(args.e,'-','−')))
			:done()
	end

	if args.u then
		ret:wikitext(' ' .. args.u)
	end

	return ret
end

return p