Jump to content

Module:Template link general

Permanently protected module
From Wikipedia, the free encyclopedia

-- This implements Template:Template link general and various other templates in its familylocalgetArgs=require('Module:Arguments').getArgslocalp={}-- Is a string non-empty?localfunction_ne(s)returns~=nilands~=""endlocalnw=mw.text.nowikilocalfunctionaddTemplate(s)locali,_=s:find(':',1,true)ifi==nilthenreturn'Template:'..sendlocalns=s:sub(1,i-1)ifns==''ormw.site.namespaces[ns]thenreturnselsereturn'Template:'..sendendlocalfunctiontrimTemplate(s)localneedle='template:'ifs:sub(1,needle:len()):lower()==needlethenreturns:sub(needle:len()+1)elsereturnsendendlocalfunctionlinkTitle(args)if_ne(args.nolink)thenif_ne(args.subst)thenreturn'subst:'..args['1']elsereturnargs['1']endendlocaltitleObjlocaltitlePart='[['ifargs['1']then-- This handles :Page and other NStitleObj=mw.title.new(args['1'],'Template')elsetitleObj=mw.title.getCurrentTitle()endtitlePart=titlePart..(titleObj~=nilandtitleObj.fullTextoraddTemplate(args['1']))localtextPart=args.alttextifnot_ne(textPart)theniftitleObj~=nilthentextPart=titleObj:inNamespace("Template")andargs['1']ortitleObj.fullTextelse-- redlinktextPart=args['1']endendif_ne(args.subst)then-- HACK: the ns thing above is probably brokentextPart='subst:'..textPartendif_ne(args.brace)thentextPart=nw('{{')..textPart..nw('}}')elseif_ne(args.braceinside)thentextPart=nw('{')..textPart..nw('}')endtitlePart=titlePart..'|'..textPart..']]'if_ne(args.braceinside)thentitlePart=nw('{')..titlePart..nw('}')endreturntitlePartendfunctionp.main(frame)localargs=getArgs(frame,{trim=true,removeBlanks=false})returnp._main(args)endfunctionp._main(args)localbold=_ne(args.bold)or_ne(args.boldlink)or_ne(args.boldname)localitalic=_ne(args.italic)or_ne(args.italics)localdontBrace=_ne(args.brace)or_ne(args.braceinside)localcode=_ne(args.code)or_ne(args.tt)localshow_result=_ne(args._show_result)localexpand=_ne(args._expand)-- Build the link partlocaltitlePart=linkTitle(args)ifboldthentitlePart="'''"..titlePart.."'''"endif_ne(args.nowrapname)thentitlePart='<span class="nowrap">'..titlePart..'</span>'end-- Build the argumentslocaltextPart=""localtextPartBuffer="&#124;"localcodeArguments={}localcodeArgumentsString=""locali=2localj=1whileargs[i]dolocalval=args[i]ifval~=""thenif_ne(args.nowiki)then-- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will-- mangle the nowiki strip marker and result in literal UNIQ...QINU showing upval=nw(mw.text.unstripNoWiki(val))endlocalk,v=string.match(val,"(.*)=(.*)")ifnotkthencodeArguments[j]=valj=j+1elsecodeArguments[k]=vendcodeArgumentsString=codeArgumentsString..textPartBuffer..valifitalicthenval='<span style="font-style:italic;">'..val..'</span>'endtextPart=textPart..textPartBuffer..valendi=i+1end-- final wraplocalret=titlePart..textPartifnotdontBracethenret=nw('{{')..ret..nw('}}')endif_ne(args.a)thenret=nw('*')..'&nbsp;'..retendif_ne(args.kbd)thenret='<kbd>'..ret..'</kbd>'endifcodethenret='<code>'..ret..'</code>'elseif_ne(args.plaincode)thenret='<code style="border:none;background:transparent;color:inherit">'..ret..'</code>'endif_ne(args.nowrap)thenret='<span class="nowrap">'..ret..'</span>'end--[[ Wrap as html??  local span = mw.html.create('span') span:wikitext(ret) --]]if_ne(args.debug)thenret=ret..'\n<pre>'..mw.text.encode(mw.dumpObject(args))..'</pre>'endifshow_resultthenlocalresult=mw.getCurrentFrame():expandTemplate{title=addTemplate(args[1]),args=codeArguments}ret=ret.." → "..resultendifexpandthenlocalquery=mw.text.encode('{{'..addTemplate(args[1])..string.gsub(codeArgumentsString,textPartBuffer,"|")..'}}')localurl=mw.uri.fullUrl('special:ExpandTemplates','wpInput='..query)mw.log()ret=ret.." ["..tostring(url).."]"endreturnretendreturnp
close