Module:TitleUtil

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.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, '/') return table.concat(util_table.slice(tbl,s,s+n-1),'/') end

function p.titleslice(str, s, e)	local tbl = p.titleTable(str) 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 title.redirectTarget.fullText end return page end

return p