Module:Other uses of
Jump to navigation
Jump to search
Usage
This module should neither be invoked directly nor used from Lua. Use the {{other uses of}} template instead.
local mArguments --initialize lazily local mHatList = require('Module:Hatnote list') local mHatnote = require('Module:Hatnote') local mOtheruses = require('Module:Other uses') local yesNo = require('Module:Yesno') local p = {} function p.otherusesof (frame) mArguments = require('Module:Arguments') return p._otherusesof(mArguments.getArgs(frame)) end function p._otherusesof (args) local currentTitle = mw.title.getCurrentTitle() local prefixedText = currentTitle.prefixedText local maxArg = 0 for k, v in pairs(args) do if type(k) == 'number' and k > maxArg then maxArg = k end end local page = args[maxArg] if maxArg == 1 then page = mHatnote.disambiguate(page) end local ofWhat = nil if maxArg > 2 then local pages = {} local midPages = {} for k, v in pairs(args) do if type(k) == 'number' and k < maxArg then midPages[k] = mHatnote.quote(v) end end for i = 1, maxArg do if midPages[i] then pages[#pages + 1] = midPages[i] end end ofWhat = mHatList.orList(pages) end if not ofWhat then ofWhat = args[1] or prefixedText end local options = { title = ofWhat, otherText = args.topic and string.format('uses of %s in %s', mHatnote.quote(ofWhat), args.topic) or string.format('uses of %s', mHatnote.quote(ofWhat)) } local skipCat = (currentTitle.isTalkPage or (currentTitle.namespace == 2)) or (yesNo(args.category) == false) local oddCat = skipCat and '' or "[[Category:Hatnote templates using unusual parameters]]" if (mw.ustring.lower(args[1] or "") == mw.ustring.lower(prefixedText)) and maxArg <= 2 or ((not args[1]) and (not args[2])) then options.otherText = options.otherText .. oddCat end arg = page and {page} or {} return mOtheruses._otheruses(arg, options) end return p