模块:TitleUtil
此模块的文档可以在模块:TitleUtil/doc创建
local util_text = require('Module:TextUtil')
local util_table = require('Module:TableUtil')
local util_vars = require('Module:VarsUtil')
local p = {}
function p.titleTable(title)
local title = title or mw.title.getCurrentTitle().text
return util_text.split(title,'/')
end
function p.concatSubpage(base, extension)
-- concatenate the two but don't add a / if the 2nd argument is empty or Overview
if extension == 'Overview' or extension == '' or not extension then
return base
elseif base == '' or not base then
return extension
else
return base .. '/' .. extension
end
end
function p.concatSubpageParts(base, ...)
local args = {...}
while next(args) do
base = p.concatSubpage(base, table.remove(args, 1))
end
return base
end
function p.concatSubpageArg(base, extension)
if base == 'events' then base = nil end
return p.concatSubpage(base, extension)
end
function p.concatSubpageSystem(base, extension)
local systems = mw.loadData('Module:Systems')
return p.concatSubpage(base, systems[extension])
end
function p.concatSystemSubpage(base, extension)
local systems = mw.loadData('Module:Systems')
return p.concatSubpage(systems[base], extension)
end
function p.concatSubpages(tbl, extension)
for k, v in pairs(tbl) do
tbl[k] = p.concatSubpage(v, extension)
end
return
end
function p.titleparts(str, n, s)
local tbl = util_text.split(str or mw.title.getCurrentTitle().text, '/')
s = util_table.guaranteeIndex(tbl, s)
return table.concat(util_table.slice(tbl,s,s+n-1),'/')
end
function p.titleslice(str, s, e)
local tbl = p.titleTable(str)
s = util_table.guaranteeIndex(tbl, s)
e = util_table.guaranteeIndex(tbl, e)
return table.concat(util_table.slice(tbl,s,e),'/')
end
function p.target(page)
if not page then return nil end
local title = mw.title.makeTitle(ns or '', page)
if title.redirectTarget then
return p.escape(title.redirectTarget.fullText)
end
return p.escape(page)
end
function p.escape(page)
return page:gsub('_', ' ')
end
return p