Module:JSON arguments

-- Returns the frame's passed arguments as a JSON object, used for reusing -- data between a parent and child template.

-- You are meant to invoke this in a template without parameters.

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

function p.main(frame) local args = getArgs(frame, {		trim = true,		removeBlanks = false	})

return p._main(frame, args) end

function p._main(frame, args) local finalArgs = {} local exclude = {} for v in mw.ustring.gmatch(args["exclude"] or "", "[^,]+") do		table.insert(exclude, v)	end for k, v in pairs(frame:getParent.args) do		local excluded = false for _, ev in pairs(exclude) do			if ev == k then excluded = true end end if not excluded then finalArgs[k] = v		end end return mw.text.jsonEncode(finalArgs) end

return p