Module:Sandbox/trappist the monk/template params

require('strict');

--[[--< P A R A M _ N A M E S _ G E T >

read the unparsed content of a template and create a list of all parameters used in that template page. may be useful to replace the manually curated lists of parameters given to Module:Check for unknown parameters.

]]

local function param_names_get local template_content;														-- unparsed template content goes here local title_object = mw.title.getCurrentTitle;							-- create a title object for the current title if 10 == title_object.namespace then										-- must be template namespace template_content = title_object:getContent;							-- get the template's raw text else template_content = mw.title.new('Template:EB1911'):getContent or '';	-- for development --		return ' error: Template namespace only ';		-- not in template namespace, emit an error message and abandon end

local params_t = {};														-- sequence table to hold each from any {{{ that we find for param in template_content:gmatch ('{{{([^|}]+)') do		table.insert (params_t, param);											-- save it; there may be duplicates which will be cleaned up later end

local out_t = {};															-- sequence table to hold param names for output local log_t = {};															-- a log table for evaluation for _, param in ipairs (params_t) do										-- for each of the parameter names accumulated in  if not log_t[param] then												-- have we already seen this parameter name? table.insert (out_t, param);										-- no, add to the output sequence table log_t[param] = 1;													-- and add with count of one to the log table else																	-- here for parameter names we've seen log_t[param] = log_t[param] + 1;									-- bump the count end end --	mw.logObject (log_t);														-- emit a log of parameter names and how many times they are used in the template table.sort (out_t);															-- sort list of parameter names return table.concat (out_t, ' | ');											-- and make all pretty-like for placement in {{#invoke:Check for unknown parameters|check|...}} --	return mw.dumpObject (out_t); end

--[[--< T E S T >--

a variant of the above that uses Module:Sandbox/trappist the monk/template params/data to fetch the known- parameters list

{{#invoke:Sandbox/trappist the monk/template params|test}}

]]

local function test local data = mw.loadData ('Module:Sandbox/trappist the monk/template params/data');	-- load an associative table of known parameter names return mw.dumpObject (known_params_t); --	return data.known_params_t['footnote'] end

----< E X P O R T E D  F U N C T I O N S >--

return { --	param_names_get = param_names_get, test = test }