Module:Anchor
Þessi síða var afrituð frá ensku Wikiheimild. Reynt hefur verið að aðlaga hana að íslensku Wikiheimildum með sem fæstum mögulegum breytingum. Það er gert til að forðast fjölverknað og spara tíma en einnig svo hægt sé að taka við uppfærslum og nýjum eiginleikum með sem minnstri fyrirhöfn. Leiðbeiningar um notkun hennar má finna á enska verkefninu. Einungis það sem lesandinn sér skal íslenskað. Ef frekari breytingar eru nauðsynlegar til að aðlaga hana að íslenska verkefninu skulu þær útskýrðar hér fyrir neðan.
--[=[
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()
if not anchor then
return error_message('No anchor specified')
end
if page.nsText == 'Page' and not pageno then
return error_message('No page number specified')
end
local title = page.text
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
end
end
return '[[' .. mw.title.makeTitle(page.nsText, title, anchor).fullText .. '|' .. 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()
if not anchor then
return error_message('No anchor specified')
end
if page.nsText == 'Page' and not pageno then
return error_message('No page number specified')
end
local title = page.text
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)
local baseSubpageBaseTitle = mw.title.makeTitle(page.nsText, baseSubpageTitle.baseText .. '/' .. subpage)
local subpageTitle = mw.title.makeTitle(page.nsText, subpage)
if rootSubpageTitle.exists then
title = rootSubpageTitle.text
elseif baseSubpageTitle.exists then
title = baseSubpageTitle.text
elseif baseSubpageBaseTitle.exists then
title = baseSubpageBaseTitle.text
elseif subpageTitle.exists then
title = subpage
end
end
return '[[' .. mw.title.makeTitle(page.nsText, title, anchor).fullText .. '|' .. text .. ']]'
end
function p.anchor_link_2(frame)
return p._anchor_link_2(getArgs(frame))
end
return p