[checked revision] | [checked revision] |
m (Syncing content across wikis) |
m (Syncing content across wikis) |
||
Line 1: | Line 1: | ||
local util = require('Module:Util') |
local util = require('Module:Util') |
||
local util_table = require('Module:TableUtil') |
local util_table = require('Module:TableUtil') |
||
+ | local util_title = require('Module:TitleUtil') |
||
local tabsheader = require('Module:TabsHeader') |
local tabsheader = require('Module:TabsHeader') |
||
local corr = require('Module:CorrespondingPageBox').makeBox |
local corr = require('Module:CorrespondingPageBox').makeBox |
||
Line 97: | Line 98: | ||
this = util_table.keyOf(t.links, title[i]) or 1 |
this = util_table.keyOf(t.links, title[i]) or 1 |
||
} |
} |
||
− | basepagestr = |
+ | basepagestr = util_title.concatSubpage(basepagestr,t.links[tbl[j].this]) |
if t[title[i]] then |
if t[title[i]] then |
||
t = t[title[i]] |
t = t[title[i]] |
||
i = i + 1 |
i = i + 1 |
||
+ | elseif tbl[j].this == 1 then |
||
⚫ | |||
t = t['Overview'] |
t = t['Overview'] |
||
⚫ | |||
+ | t = nil |
||
end |
end |
||
j = j + 1 |
j = j + 1 |
||
Line 112: | Line 115: | ||
local tbl = {} |
local tbl = {} |
||
for i, link in ipairs(links) do |
for i, link in ipairs(links) do |
||
− | tbl[i] = |
+ | tbl[i] = util_title.concatSubpage(path, link) |
end |
end |
||
return tbl |
return tbl |
Revision as of 23:32, 3 September 2018
To edit the documentation or categories for this module, click here.
local util = require('Module:Util')
local util_table = require('Module:TableUtil')
local util_title = require('Module:TitleUtil')
local tabsheader = require('Module:TabsHeader')
local corr = require('Module:CorrespondingPageBox').makeBox
local p = {}
function p.main(json, linkadjustments, navboxdata, corr, basepage, after)
local frame = mw.getCurrentFrame()
local title = p.getCanonicalTitle(linkadjustments, basepage)
local thisevent, tabstable = p.whereAreWe(json, title, basepage)
local text = {}
if navboxdata then p.makeNavboxes(frame, text, navboxdata, thisevent) end
n = #text + 2
if json then
p.makeTabs(text, tabstable, linkadjustments)
end
if corr then table.insert(text, n, p.makeCorrBox(corr, title)) end
if after then text[#text+1] = after end
local output = table.concat(text,'')
return output
end
-- making parts of the page
function p.getCanonicalTitle(linkadjustments, basepage)
local title = mw.title.getCurrentTitle()
titlestr = title.nsText == 'Template' and basepage or title.prefixedText
if not linkadjustments then
return titlestr
end
return p.findReplace(titlestr, linkadjustments.fr.replace, linkadjustments.fr.find)
end
function p.makeNavboxes(frame, text, data, thisevent)
for i, navboxdata in ipairs(data) do
if navboxdata.events.showAll or util_table.keyOf(navboxdata.events, thisevent) then
text[#text+1] = frame:expandTemplate({
title = navboxdata.title,
args = navboxdata.args
})
end
end
return
end
function p.makeCorrBox(args, title)
local i = tonumber(args.showCorr)
if i then
elseif args.corr_titlematch then
for k, v in ipairs(args.corr_titlematch) do
if string.find(title,v,1,true) then
i = k
end
end
else
i = 1
end
return corr({
find = mw.text.split(args.corr_find[i] or '','%s*;%s*'),
replace = mw.text.split(args.corr_replace[i] or '','%s*;%s*'),
display = args.corr_display and mw.text.split(args.corr_display[i] or '','%s*;%s*'),
tournament = args.corr_tournament and mw.text.split(args.corr_tournament[i] or '','%s*;%s*'),
targetpage = args.targetpage,
})
end
function p.makeTabs(text, tabstable, linkadjustments)
for k, v in ipairs(tabstable) do
if linkadjustments then
p.linksToOutput(v.links, linkadjustments)
end
text[#text+1] = tabsheader.fromTables(v.names, v.links, v.this, {})
end
return
end
function p.linksToOutput(links, linkadjustments)
for k, link in ipairs(links or {}) do
links[k] = p.linkToOutput(link, linkadjustments.fr, linkadjustments.cd, k)
end
return
end
-- where are we
function p.whereAreWe(json, titlestr, basepagestr)
local title = mw.text.split(titlestr,'/')
local basepage = mw.text.split(basepagestr,'/')
local tbl = {}
local i = #basepage + 1
local thisevent = title[i] or 'Overview'
local t = json
local j = 1
while t do
tbl[j] = {
links = p.constructLinks(t.links,basepagestr),
names = t.names,
this = util_table.keyOf(t.links, title[i]) or 1
}
basepagestr = util_title.concatSubpage(basepagestr,t.links[tbl[j].this])
if t[title[i]] then
t = t[title[i]]
i = i + 1
elseif tbl[j].this == 1 then
t = t['Overview']
else
t = nil
end
j = j + 1
end
return thisevent, tbl
end
function p.constructLinks(links,path)
local tbl = {}
for i, link in ipairs(links) do
tbl[i] = util_title.concatSubpage(path, link)
end
return tbl
end
-- Processing utils
function p.newIndex(base, extension)
-- concatenate the two but don't add a / if the 2nd argument is empty
if not base and extension == 'Overview' then
return 'events/Overview'
elseif not base or base == '' or base == 'events' then
return extension
elseif extension == '' or not extension then
return base
else
return base .. '/' .. extension
end
end
function p.linkToOutput(link, fr, cd, k)
link = p.findReplace(link, fr.find, fr.replace)
link = (k~= 1) and cd[link] or link
return link
end
function p.findReplace(link, find, replace)
for k, v in ipairs(find) do
link = string.gsub(link, util.escape(v), util.escape(replace[k]))
end
return link
end
return p