Module:Gaps: Difference between revisions

From Zoophilia Wiki
Jump to navigationJump to search
meta>The Mol Man
No edit summary
Ookami (talk | contribs)
m 25 revisions imported
 
(21 intermediate revisions by 5 users not shown)
Line 1: Line 1:
local p = {}
local p = {}


function p._make(frame)
local getArgs
local parameters = frame:getParent().args
 
local size
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 '')
if parameters['size'] then
local gapSize, gapUnit = string.match(gap,'([%d%.]+)%s*([ep][mnx])')
size = 'font-size:'..parameters['size']..';'
else
size = ''
end
local acceptedUnits = { em = 'em', en = 'en', px = 'px' }
local ret_string = '<span style="white-space: nowrap;'..size..'">'
gapUnit = acceptedUnits[gapUnit]
if parameters['lhs'] then
if gapSize and gapUnit then
ret_string = ret_string..parameters['lhs']..' = '
gap = gapSize..gapUnit
else
gap = '0.25em'
end
end
for i=1,20,1 do
for k,v in ipairs(args) do
if not parameters[i] then
if k == 1 then
break
ret:wikitext(v)
else
else
ret_string = ret_string..'<span style="margin-left: 0.2em">'..parameters[i]..'</span>'
ret:tag('span')
:css('margin-left',gap)
:wikitext(v)
end
end
end
end
 
if parameters['e'] then
if args.e then
local base = parameters['base'] or '10'
ret
ret_string = ret_string..'<span style="margin-left: 0.27em; margin-right: 0.27em">×</span>'..
:tag('span')
base ..'<span style="display:none">^</span><sup>'..parameters['e']..'</sup>'
: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
end
 
if parameters['u'] then
if args.u then
ret_string = ret_string..'&nbsp;'..parameters['u']
ret:wikitext('&nbsp;' .. args.u)
end
end
 
return ret_string
return ret
end
end


return p
return p

Latest revision as of 13:52, 3 September 2020

Documentation for this module may be created at Module:Gaps/doc

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.25em'
	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('&nbsp;' .. args.u)
	end

	return ret
end

return p