Jump to content

Module:Page

Permanently protected module
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Wnt (talk | contribs) at 19:19, 20 March 2013 (erm, yeah, because the first part isn't a parameter!). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

 ---- 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:  {{#invoke:Page|(function)|parameters}}
 ---- (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 page=args.page or pargs.page or args[1] or pargs[1]
   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
      return frame.preprocess(frame, "<pre><nowiki>" .. result(title,p1,p2,p3,p4,p5,p6,p7,p8,p9).. [[</nowiki></pre><span style="display:none;">]]) -- I *think* these are all page:x() calls
   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.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