ਮੌਡਿਊਲ:Anchor
ਇਹ ਮੌਡਿਊਲ ਹੇਠ ਲਿਖੇ ਮੌਡਿਊਲਾਂ ਉੱਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ: |
Logic for {{anchor}}, {{anchor link}} and {{anchor link 2}}.
--[=[
Implements anchor templates
]=]
require('strict')
local getArgs = require('Module:Arguments').getArgs
local function error_message(message)
return require('Module:Error')['error']({['message'] = message})
end
local p = {}
-- [[Template:Anchor]]
function p._anchor(args)
local anchorList = {}
for k, v in pairs(args) do
-- number restriction isn't a technical requirement and could be removed
if v and #anchorList < 20 then
anchorList[#anchorList + 1] = '<span id="' .. v .. '></span>'
elseif v and #anchorList == 20 then
anchorList[#anchorList + 1] = error_message('[[Module:Anchor]]: more than 20 anchors')
end
end
return table.concat(anchorList)
end
function p.anchor(frame)
return p._anchor(getArgs(frame))
end
-- [[Template:Anchor link]]
function p._anchor_link(args)
local anchor = mw.uri.anchorEncode(args.anchor or args[1])
local pageno = args.pageno or args[2]
local subpage = args.subpage or args[3]
local page = mw.title.getCurrentTitle()
local title
if page.nsText == 'Page' then
title = page.rootText .. '/' .. pageno
elseif subpage then
local rootSubpageTitle = mw.title.makeTitle(page.nsText, page.rootText .. '/' .. subpage)
local baseSubpageTitle = mw.title.makeTitle(page.nsText, page.baseText .. '/' .. subpage)
if rootSubpageTitle.exists then
title = rootSubpageTitle.text
elseif baseSubpageTitle.exists then
title = baseSubpageTitle.text
else
title = page.text
end
end
return mw.title.makeTitle(page.nsText, title, anchor)
end
function p.anchor_link(frame)
return p._anchor_link(getArgs(frame))
end
-- [[Template:Anchor link 2]]
function p._anchor_link_2(args)
local subpage = args.subpage or args[1]
local pageno = args.pageno or args[2]
local anchor = mw.uri.anchorEncode(args.anchor or args[3])
local text = args.text or args[4] or anchor
local page = mw.title.getCurrentTitle()
local title
if page.nsText == 'Page' and pageno then
title = page.rootText .. '/' .. pageno
elseif page.nsText == 'Page' then
return text
elseif subpage then
local rootSubpageTitle = mw.title.makeTitle(page.nsText, page.rootText .. '/' .. subpage)
local baseSubpageTitle = mw.title.makeTitle(page.nsText, page.baseText .. '/' .. subpage)
local baseSubpageBaseTitle = mw.title.makeTitle(page.nsText, baseSubpageTitle.baseText .. '/' .. subpage)
if rootSubpageTitle.exists then
title = rootSubpageTitle.prefixedText
elseif baseSubpageTitle.exists then
title = baseSubpageTitle.prefixedText
elseif baseSubpageBaseTitle.exists then
title = baseSubpageBaseTitle.prefixedText
else
title = subpage
end
end
return '[[' .. title .. '#' .. anchor .. '|' .. text .. ']]'
end
function p.anchor_link_2(frame)
return p._anchor_link_2(getArgs(frame))
end
return p