Module:Page

This module is meant to allow the goodies listed in http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Title_objects to be accessed by people who don't want to program a Lua module. Usage is: (function) is one of the function names from the table above: id, interwiki, namespace, fragment, nsText, subjectNsText, text, prefixedText, fullText ...

parameters are: page = (name of page to load; leave blank to call mw.title.getCurrentTitle    this is "text" passed to mw.title.new or "title" passed to mw.title.makeTitle  makeTitle = nonblank to call mw.title.makeTitle otherwise mw.title.new is called  namespace = (parameter passed to new/makeTitle)  fragment = (parameter passed to makeTitle)  interwiki = (parameter passed to makeTitle)  p1 = first parameter passed to functions within the title object  p2 = second parameter " " " "  p3 etc. (for inNamespaces)

Sorry, getContents doesn't work for many applications because all templates are destroyed. It does work on plain text though.

local p = {}

function p.main(frame) local args=frame.args local parent=frame.getParent(frame) local pargs={} if parent then pargs=parent.args end local makeTitle=args.makeTitle or pargs.makeTitle or "" local namespace=args.namespace or pargs.namespace or "" local fragment=args.fragment or pargs.fragment or "" local interwiki=args.interwiki or pargs.interwiki or "" local p1 = args.p1 or pargs.p1 or "" local p2 = args.p2 or pargs.p2 or "" local p3 = args.p3 or pargs.p3 or "" local p4 = args.p4 or pargs.p4 or "" local p5 = args.p5 or pargs.p5 or "" local p6 = args.p6 or pargs.p6 or "" local p7 = args.p7 or pargs.p7 or "" local p8 = args.p8 or pargs.p8 or "" local p9 = args.p9 or pargs.p9 or "" local nowiki = args.nowiki or pargs.nowiki or false local page=args.page or pargs.page or args[1] or pargs[1] if page=="" then page=nil end local title -- holds the result of the mw.title.xxx call if not(page) then title=mw.title.getCurrentTitle if not(title) then return "error: failed to getCurrentTitle" end else if makeTitle then title=mw.title.makeTitle(namespace,page,fragment,interwiki) if not (title) then return "error: failed to makeTitle(" .. namespace .. "," .. page .. "," .. fragment .. "," .. interwiki .. ")" end else if id then title=mw.title.new(id) if not (title) then return "error: failed to mw.title.new(" .. id .. ")" end else title=mw.title.new(page,namespace) if not (title) then return "error: failed to mw.title.new(" .. page .. "," .. namespace .. ")" end end -- if id       end -- if makeTitle end -- if not(page) local result=title[field] if type(result)=="function" then if nowiki then return frame.preprocess(frame, " " .. tostring(result(title,p1,p2,p3,p4,p5,p6,p7,p8,p9))..   ) -- I *think* these are all page:x calls else return frame.preprocess(frame,result(title,p1,p2,p3,p4,p5,p6,p7,p8,p9)) end else return tostring(result) -- note that nil values will be returned as "nil", not "" end end

function p.id(frame) field="id" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.interwiki(frame) field="interwiki" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.namespace(frame) field="namespace" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.fragment(frame) field="fragment" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.nsText(frame) field="nsText" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.subjectNsText(frame) field="subjectNsText" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.text(frame) field="text" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.prefixedText(frame) field="prefixedText" return p.main(frame) end

function p.fullText(frame) field="fullText" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.rootText(frame) field="rootText" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.baseText(frame) field="baseText" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.subpageText(frame) field="subpageText" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.canTalk(frame) field="canTalk" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.exists(frame) field="exists" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.fileExists(frame) field="fileExists" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.isContentPage(frame) field="isContentPage" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.isExternal(frame) field="isExternal" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.isLocal(frame) field="isLocal" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.isRedirect(frame) field="isRedirect" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.isSpecialPage(frame) field="isSpecialPage" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.isSubpage(frame) field="isSubpage" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.isTalkPage(frame) field="isTalkPage" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.isSubpageOf(frame) field="isSubpageOf" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.inNamespace(frame) field="inNamespace" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.inNamespaces(frame) field="inNamespaces" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.hasSubjectNamespace(frame) field="hasSubjectNamespace" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.contentModel(frame) field="contentModel" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.basePageTitle(frame) field="basePageTitle" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.rootPageTitle(frame) field="rootPageTitle" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.talkPageTitle(frame) field="talkPageTitle" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.subjectPageTitle(frame) field="subjectPageTitle" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.subPageTitle(frame) field="subPageTitle" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.partialUrl(frame) field="partialUrl" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.fullUrl(frame) field="fullUrl" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.localUrl(frame) field="localUrl" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.canonicalUrl(frame) field="canonicalUrl" return p.main(frame) -- I think that frame, field automatically is available to p.main end

function p.getContent(frame) field="getContent" return p.main(frame) -- I think that frame, field automatically is available to p.main end

return p