پرش به محتوا

پودمان:Template link general

از ویکیپدیا، دانشنامهٔ آزاد
توضیحات پودمان[ایجاد] [پاکسازی]
-- This implements Template:Tlg
localgetArgs=require('Module:Arguments').getArgs
localp={}

-- Is a string non-empty?
localfunction_ne(s)
returns~=nilands~=""
end

localnw=mw.text.nowiki

localfunctionaddTemplate(s)
locali,_=mw.ustring.find(s,':',1,true)
ifi==nilthen
return'الگو:'..s
end
localns=mw.ustring.sub(s,1,i-1)
ifns==''ormw.site.namespaces[ns]then
returns
else
return'الگو:'..s
end
end

localfunctiontrimTemplate(s)
localneedle='الگو:'
ifs:sub(1,needle:len()):lower()==needlethen
returnmw.ustring.sub(s,needle:len()+1)
else
returns
end
end

localfunctionlinkTitle(args)
if_ne(args.nolink)then
returnargs['1']
end

localtitleObj
localtitlePart='[['
ifargs['1']then
-- This handles:Page and other NS
titleObj=mw.title.new(args['1'],'الگو')
else
titleObj=mw.title.getCurrentTitle()
end

titlePart=titlePart..(titleObj~=nilandtitleObj.fullTextor
addTemplate(args['1']))

localtextPart=args.alttext
ifnot_ne(textPart)then
iftitleObj~=nilthen
textPart=titleObj:inNamespace("الگو")andargs['1']ortitleObj.fullText
else
-- redlink
textPart=args['1']
end
end

if_ne(args.subst)then
-- HACK: the ns thing above is probably broken
textPart='جا:'..textPart
end

if_ne(args.brace)then
textPart=nw('{{')..textPart..nw('}}')
elseif_ne(args.braceinside)then
textPart=nw('{')..textPart..nw('}')
end

titlePart=titlePart..'|'..textPart..']]'
if_ne(args.braceinside)then
titlePart=nw('{')..titlePart..nw('}')
end
returntitlePart
end

functionp.main(frame)
localargs=getArgs(frame,{
trim=true,
removeBlanks=false
})
returnp._main(args)
end

functionp._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 part
localtitlePart=linkTitle(args)
ifboldthentitlePart="'''"..titlePart.."'''"end
if_ne(args.nowrapname)thentitlePart='<span class= "nowrap" >'..titlePart..'</span>'end

-- Build the arguments
localtextPart=""
localtextPartBuffer="&#124;"
localcodeArguments={}
localcodeArgumentsString=""
locali=2
localj=1
whileargs[i]do
localval=args[i]
ifval~=""then
if_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 up
val=nw(mw.text.unstripNoWiki(val))
end
localk,v=mw.ustring.match(val,"(.*)=(.*)")
ifnotkthen
codeArguments[j]=val
j=j+1
else
codeArguments[k]=v
end
codeArgumentsString=codeArgumentsString..textPartBuffer..val
ifitalicthen
val='<span style= "font-style:italic;" >'..val..'</span>'
end
textPart=textPart..textPartBuffer..val
end
i=i+1
end

-- final wrap
localret=titlePart..textPart
ifnotdontBracethenret=nw('{{')..ret..nw('}}')end
if_ne(args.a)thenret=nw('*')..'&nbsp;'..retend
if_ne(args.kbd)thenret='<kbd>'..ret..'</kbd>'end
ifcodethen
ret='<code>'..ret..'</code>'
elseif_ne(args.plaincode)then
ret='<code style= "border:none;background:transparent;" >'..ret..'</code>'
end
if_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>'end

ifshow_resultthen
localresult=mw.getCurrentFrame():expandTemplate{title=addTemplate(args[1]),args=codeArguments}
ret=ret.."←"..result
end

ifexpandthen
localquery=mw.text.encode('{{'..addTemplate(args[1])..mw.ustring.gsub(codeArgumentsString,textPartBuffer,"|")..'}}')
localurl=mw.uri.fullUrl('special:ExpandTemplates','wpInput='..query)
mw.log()
ret=ret.."["..tostring(url).."]"
end

returnret
end

returnp