Module:Format title

local getArgs = require('Module:Arguments').getArgs local p = {}

local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame) return p[funcName](args) end end

p.italic = makeInvokeFunc('_italic')

function p._italic(args) local title = args[1] local invert = args[2] local prefix, parenthetical = mw.ustring.match(title, '^(.+) %(([^%(%)]+)%)$') local result if prefix and parenthetical and args.all ~= 'yes' then if invert == 'i' or invert == 'inv' or invert == 'invert' then result = string.format("%s \(\'\'%s\'\'\)", prefix, parenthetical) else result = string.format("\'\'%s\'\' \(%s\)", prefix, parenthetical) end else result = string.format("\'\'%s\'\'", title) end return result end

p.quotes = makeInvokeFunc('_quotes')

function p._quotes(args) local title = args[1] local invert = args[2] local prefix, parenthetical = mw.ustring.match(title, '^(.+) %(([^%(%)]+)%)$') local result if prefix and parenthetical and args.all ~= 'yes' then if invert == 'i' or invert == 'inv' or invert == 'invert' then result = string.format("%s \(\"%s\"\)", prefix, parenthetical) else result = string.format("\"%s\" \(%s\)", prefix, parenthetical) end else result = string.format("\"%s\"", title) end return result end

return p