Module:Link

Star0讨论 | 贡献2021年7月21日 (三) 10:20的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

可在Module:Link/doc创建此模块的帮助文档

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

local function makeInvokeFunc(funcName)
	return function (frame)
		local args = getArgs(frame)
		return p[funcName](args)
	end
end

p.titular = makeInvokeFunc('_titular')

function p._titular(args)
	local result=""
	for i,k in ipairs(args) do
		result=result..'<span id="'..k..'"></span>'
	end
	return result
end

function link(page,name)
	local result= '[['..page..'列表#'..name..'|'..name..']]'
	return result
end

p.link = makeInvokeFunc('_link')

function p._link(args)
	local page,text=args[1],args[2]
	local a,b,c
	
	a,b = text:match('([^\s]*) (feat.*)') 
	if a and b then
		return link(page,a)..' '..b
	end
	
	a,b,c = text:match('([^\s]*) (vs) ([^\s]*)') 
	if a and b and c then
		return link(page,a)..' '..b..' '..link(page,c)
	end
	
	a,b,c = text:match('([^\s]*) (×) ([^\s]*)') 
	if a and b and c then
		return link(page,a)..' '..b..' '..link(page,c)
	end

	a,b,c = text:match('([^\s]*) (vs.) ([^\s]*)') 
	if a and b and c then
		return link(page,a)..' '..b..' '..link(page,c)
	end

	a,b,c = text:match('([^\s]*) (x) ([^\s]*)') 
	if a and b and c then
		return link(page,a)..' '..b..' '..link(page,c)
	end

	a,b,c = text:match('([^\s]*) (&) ([^\s]*)') 
	if a and b and c then
		return link(page,a)..' '..b..' '..link(page,c)
	end

	return link(page,text)
end

return p