Module:For

local mArguments --initialize lazily

local mHatlist = require('Module:Hatnote list')

local mHatnote = require('Module:Hatnote')

local yesNo = require('Module:Yesno')

local p = {}

--Implements from the frame

--uses capitalized "For" to avoid collision with Lua reserved word "for"

function p.For (frame)

mArguments = require('Module:Arguments')

return p._For(mArguments.getArgs(frame))

end

--Implements but takes a manual arguments table

function p._For (args)

local use = args[1]

if (not use) then

return mHatnote.makeWikitextError(

'no context parameter provided. Use for "other uses" hatnotes.',

'Template:For#Errors',

args.category

)

end

local pages = {}

function two (a, b) return a, b, 1 end --lets us run ipairs from 2

for k, v in two(ipairs(args)) do table.insert(pages, v) end

local title = mw.title.getCurrentTitle

local skipCat = title.isTalkPage or title.namespace == 2 --don't categorise talk pages and userspace

local oddCat = skipCat and  or 

local category = yesNo(args.category)

return mHatnote._hatnote(

mHatlist.forSeeTableToString,

{selfref = args.selfref}

) .. (

(use == 'other uses') and ((category == true) or (category == nil)) and

oddCat or ''

)

end

return p