Module:Citation/CS1/Whitelist

Documentation for this module may be created at Module:Citation/CS1/Whitelist/doc

--[[--------------------------< P A R A M E T E R S   N O T   S U P P O R T E D >------------------------------

This is a list of parameters that once were but now are no longer supported:

	['albumlink'] = nil,			-- unique alias of titlelink used by old cite AV media notes
	['albumtype'] = nil,			-- controled inappropriate functionality in the old cite AV media notes
	['artist'] = nil,				-- unique alias of others used by old cite AV media notes
	['ARXIV'] = nil,				-- not an initialization
	['Author'] = nil,				-- non-standard capitalization
	['authorformat'] = nil,			-- primarily used to support Vancouver format which functionality now part of name-list-format
	['author-format'] = nil,		-- primarily used to support Vancouver format which functionality now part of name-list-format
	['author-name-separator'] = nil,-- primarily used to support Vancouver format which functionality now part of name-list-format
	['author-separator'] = nil,		-- primarily used to support Vancouver format which functionality now part of name-list-format
	['began'] = nil,				-- module handles date ranges; cite episode and cite series
	['BIBCODE'] = nil,				-- not an initialization
	['callsign'] = nil,				-- cite interview removed
	['call-sign'] = nil,			-- cite interview removed
	['chapterlink'] = nil,			-- if ever necessary to link to a chapter article, |chapter= can be wikilinked 
	['chapter-link'] = nil,			-- 
	['city'] = nil,					-- cite interview removed
	['coauthor'] = nil,				-- redundant to |authorn=; not made part of metadata
	['coauthors'] = nil,			-- redundant to |authorn=; not made part of metadata
	['cointerviewers'] = nil,		-- unique alias of others used by old cite interview
	['day'] = nil,					-- deprecated in {{citation/core}} and somehow undeprecated in Module:Citation/CS1 and now finally removed
	['director'] = nil,				-- unique alias of author used by old cite DVD-notes
	['doi_brokendate'] = nil,                  -- alias of doi-broken-date
	['doi_inactivedate'] = nil,                  -- alias of doi-inactive-date
	['DoiBroken'] = nil,			-- not used, non-standard captialization
	['Editor'] = nil,				-- non-standard capitalization
	['editorformat'] = nil,			-- primarily used to support Vancouver format which functionality now part of name-list-format
	['EditorSurname'] = nil,		-- non-standard capitalization
	['editor-format'] = nil,		-- primarily used to support Vancouver format which functionality now part of name-list-format
	['EditorGiven'] = nil,			-- non-standard capitalization
	['editor-name-separator'] = nil,-- primarily used to support Vancouver format which functionality now part of name-list-format
	['editor-separator'] = nil,		-- primarily used to support Vancouver format which functionality now part of name-list-format
	['Embargo'] = nil,				-- not used, non-standard capitalization
	['ended'] = nil,				-- module handles date ranges; cite episode and cite series
	['month'] = nil,				-- functionality supported by |date=
	['name-separator'] = nil,		-- primarily used to support Vancouver format which functionality now part of name-list-format
	['notestitle'] = nil,			-- unique alias of chapter used by old cite AV media notes
	['PPrefix'] = nil,				-- non-standard capitalization
	['PPPrefix'] = nil,				-- not used, non-standard capitalization
	['pp-prefix'] = nil,			-- not used, not documented
	['p-prefix'] = nil,				-- not used, not documented
	['program'] = nil,				-- cite interview removed
	['publisherid'] = nil,			-- unique alias of id used by old cite AV media notes and old cite DVD-notes
	['Ref'] = nil,					-- non-standard capitalization
	['separator'] = nil,			-- this functionality now provided by |mode=
	['template doc demo'] = nil,            -- alias of template doc demo
	['titleyear'] = nil,			-- unique alias of origyear used by old cite DVD-notes
	['trans_chapter'] = nil,                -- alias of trans-chapter
	['trans_title'] = nil,                  -- alias of trans-title

	['Author#'] = nil,				-- non-standard capitalization
	['authors#'] = nil,				-- no need for multiple lists of author names
	['Editor#'] = nil,				-- non-standard capitalization
	['editors#'] = nil,				-- no need for multiple lists of editor names
	['EditorGiven#'] = nil,			-- non-standard capitalization
	['EditorSurname#'] = nil,		-- non-standard capitalization

]]

--[[--------------------------< S U P P O R T E D   P A R A M E T E R S >--------------------------------------

Because a steady-state signal conveys no useful information, whitelist.basic_arguments[] list items can have three values:
	true - these parameters are valid and supported parameters
	false - these parameters are deprecated but still supported
	nil - these parameters are no longer supported (when setting a parameter to nil, leave a comment stating the reasons for invalidating the parameter)
	
]]

local whitelist = {}

local basic_arguments = {
	['accessdate'] = true,
	['access-date'] = true,
	['agency'] = true,
	['airdate'] = true,
	['air-date'] = true,
	['archivedate'] = true,
	['archive-date'] = true,
	['archive-format'] = true,
	['archiveurl'] = true,
	['archive-url'] = true,
	['article'] = true,
	['arxiv'] = true,
	['asin'] = true,
	['ASIN'] = true,
	['asin-tld'] = true,
	['ASIN-TLD'] = true,
	['at'] = true,
	['author'] = true,
	['author-first'] = true,
	['author-last'] = true,
	['authorlink'] = true,
	['author-link'] = true,
	['authormask'] = true,
	['author-mask'] = true,
	['authors'] = true,
	['bibcode'] = true,
	['bibcode-access'] = true,
	['biorxiv'] = true,
	['booktitle'] = true,
	['book-title'] = true,
	['cartography'] = true,
	['chapter'] = true,
	['chapter-format'] = true,
	['chapterurl'] = true,
	['chapter-url'] = true,
	['chapter-url-access'] = true,
	['citeseerx'] = true,
	['class'] = true,				-- cite arxiv and arxiv identifiers
	['collaboration'] = true,
	['conference'] = true,
	['conference-format'] = true,
	['conferenceurl'] = true,
	['conference-url'] = true,
	['contribution'] = true,
	['contribution-format'] = true,
	['contributionurl'] = true,
	['contribution-url'] = true,
	['contributor'] = true,
	['contributor-first'] = true,
	['contributor-last'] = true,
	['contributor-given'] = true,
	['contributor-surname'] = true,
	['contributor-link'] = true,
	['contributor-mask'] = true,
	['credits'] = true,				-- cite episode, cite serial
	['date'] = true,
	['deadurl'] = true,
	['dead-url'] = true,
	['degree'] = true,
	['department'] = true,
	['df'] = true,
	['dictionary'] = true,
	['displayauthors'] = true,
	['display-authors'] = true,
	['displayeditors'] = true,
	['display-editors'] = true,
	['docket'] = true,
	['doi'] = true,
	['DOI'] = true,
	['doi-access'] = true,
	['doi-broken'] = true,
	['doi-broken-date'] = true,
	['doi-inactive-date'] = true,
	['edition'] = true,
	['editor'] = true,
	['editor-first'] = true,
	['editor-given'] = true,
	['editor-last'] = true,
	['editorlink'] = true,
	['editor-link'] = true,
	['editormask'] = true,
	['editor-mask'] = true,
	['editors'] = true,
	['editor-surname'] = true,
	['eissn'] = true,
	['EISSN'] = true,
	['embargo'] = true,
	['encyclopaedia'] = true,
	['encyclopedia'] = true,
	['entry'] = true,
	['episode'] = true,															-- cite serial only TODO: make available to cite episode?
	['episodelink'] = true,														-- cite episode and cite serial
	['episode-link'] = true,													-- cite episode and cite serial
	['eprint'] = true,															-- cite arxiv and arxiv identifiers
	['event'] = true,
	['event-format'] = true,
	['eventurl'] = true,
	['event-url'] = true,
	['first'] = true,
	['format'] = true,
	['given'] = true,
	['hdl'] = true,
	['HDL'] = true,
	['hdl-access'] = true,
	['host'] = true,
	['id'] = true,
	['ID'] = true,
	['ignoreisbnerror'] = true,
	['ignore-isbn-error'] = true,
	['in'] = false,
	['inset'] = true,
	['institution'] = true,
	['interviewer'] = true,
	['interviewer-first'] = true,
	['interviewer-last'] = true,
	['interviewerlink'] = true,
	['interviewer-link'] = true,
	['interviewermask'] = true,
	['interviewer-mask'] = true,
	['interviewers'] = true,
	['isbn'] = true,
	['ISBN'] = true,
	['isbn13'] = true,
	['ISBN13'] = true,
	['ismn'] = true,
	['ISMN'] = true,
	['issn'] = true,
	['ISSN'] = true,
	['issue'] = true,
	['jfm'] = true,
	['JFM'] = true,
	['journal'] = true,
	['jstor'] = true,
	['JSTOR'] = true,
	['jstor-access'] = true,
	['lang'] = true,
	['language'] = true,
	['last'] = true,
	['lastauthoramp'] = true,
	['last-author-amp'] = true,
	['laydate'] = true,
	['lay-date'] = true,
	['laysource'] = true,
	['lay-source'] = true,
	['laysummary'] = true,
	['lay-summary'] = true,
	['lay-format'] = true,
	['layurl'] = true,
	['lay-url'] = true,
	['lccn'] = true,
	['LCCN'] = true,
	['location'] = true,
	['magazine'] = true,
	['mailinglist'] = true,				-- cite mailing list only
	['mailing-list'] = true,			-- cite mailing list only
	['map'] = true,						-- cite map only
	['map-format'] = true,				-- cite map only
	['mapurl'] = true,					-- cite map only
	['map-url'] = true,					-- cite map only
	['medium'] = true,
	['message-id'] = true,			-- cite newsgroup
	['minutes'] = true,
	['mode'] = true,
	['mr'] = true,
	['MR'] = true,
	['name-list-format'] = true,
	['network'] = true,
	['newsgroup'] = true,
	['newspaper'] = true,
	['nocat'] = true,
	['no-cat'] = true,
	['nopp'] = true,
	['no-pp'] = true,
	['notracking'] = true,
	['no-tracking'] = true,
	['number'] = true,
	['oclc'] = true,
	['OCLC'] = true,
	['ol'] = true,
	['OL'] = true,
	['ol-access'] = true,
	['origyear'] = true,
	['orig-year'] = true,
	['osti'] = true,
	['OSTI'] = true,
	['osti-access'] = true,
	['others'] = true,
	['p'] = true,
	['page'] = true,
	['pages'] = true,
	['people'] = true,
	['periodical'] = true,
	['place'] = true,
	['pmc'] = true,
	['PMC'] = true,
	['pmid'] = true,
	['PMID'] = true,
	['postscript'] = true,
	['pp'] = true,
	['publicationdate'] = true,
	['publication-date'] = true,
	['publicationplace'] = true,
	['publication-place'] = true,
	['publisher'] = true,
	['quotation'] = true,
	['quote'] = true,
	['ref'] = true,
	['registration'] = true,
	['rfc'] = true,
	['RFC'] = true,
	['scale'] = true,
	['script-chapter'] = true,
	['script-title'] = true,
	['season'] = true,
	['section'] = true,
	['section-format'] = true,
	['sections'] = true,					-- cite map only
	['sectionurl'] = true,
	['section-url'] = true,
	['series'] = true,
	['serieslink'] = true,
	['series-link'] = true,
	['seriesno'] = true,
	['series-no'] = true,
	['seriesnumber'] = true,
	['series-number'] = true,
	['series-separator'] = true,
	['sheet'] = true,															-- cite map only
	['sheets'] = true,															-- cite map only
	['ssrn'] = true,
	['SSRN'] = true,
	['station'] = true,
	['subject'] = true,
	['subjectlink'] = true,
	['subject-link'] = true,
	['subscription'] = true,
	['surname'] = true,
	['template-doc-demo'] = true,
	['time'] = true,
	['timecaption'] = true,
	['time-caption'] = true,
	['title'] = true,
	['titlelink'] = true,
	['title-link'] = true,
	['trans-chapter'] = true,
	['trans-map'] = true,
	['transcript'] = true,
	['transcript-format'] = true,
	['transcripturl'] = true,
	['transcript-url'] = true,
	['trans-title'] = true,
	['translator'] = true,
	['translator-first'] = true,
	['translator-last'] = true,
	['translator-given'] = true,
	['translator-surname'] = true,
	['translator-link'] = true,
	['translator-mask'] = true,
	['type'] = true,
	['url'] = true,
	['URL'] = true,
	['url-access'] = true,
	['vauthors'] = true,
	['veditors'] = true,
	['version'] = true,
	['via'] = true,
	['volume'] = true,
	['website'] = true,
	['work'] = true,
	['year'] = true,
	['zbl'] = true,
	['ZBL'] = true,
}

local numbered_arguments = {
	['author#'] = true,
	['author-first#'] = true,
	['author#-first'] = true,
	['author-last#'] = true,
	['author#-last'] = true,
	['author-link#'] = true,
	['author#link'] = true,
	['author#-link'] = true,
	['authorlink#'] = true,
	['author-mask#'] = true,
	['author#mask'] = true,
	['author#-mask'] = true,
	['authormask#'] = true,
	['contributor#'] = true,
	['contributor-first#'] = true,
	['contributor#-first'] = true,
	['contributor-last#'] = true,
	['contributor#-last'] = true,
	['contributor-given#'] = true,
	['contributor#-given'] = true,
	['contributor-surname#'] = true,
	['contributor#-surname'] = true,
	['contributor-link#'] = true,
	['contributor#-link'] = true,
	['contributor-mask#'] = true,
	['contributor#-mask'] = true,
	['editor#'] = true,
	['editor-first#'] = true,
	['editor#-first'] = true,
	['editor#-given'] = true,
	['editor-given#'] = true,
	['editor-last#'] = true,
	['editor#-last'] = true,
	['editor-link#'] = true,
	['editor#link'] = true,
	['editor#-link'] = true,
	['editorlink#'] = true,
	['editor-mask#'] = true,
	['editor#mask'] = true,
	['editor#-mask'] = true,
	['editormask#'] = true,
	['editor#-surname'] = true,
	['editor-surname#'] = true,
	['first#'] = true,
	['given#'] = true,
	['interviewer#'] = true,
	['interviewer-first#'] = true,
	['interviewer#-first'] = true,
	['interviewer-last#'] = true,
	['interviewer#-last'] = true,
	['interviewer-link#'] = true,
	['interviewer#-link'] = true,
	['interviewer-mask#'] = true,
	['interviewer#-mask'] = true,
	['last#'] = true,
	['subject#'] = true,
	['subject-link#'] = true,
	['subject#link'] = true,
	['subject#-link'] = true,
	['subjectlink#'] = true,
	['surname#'] = true,
	['translator#'] = true,
	['translator-first#'] = true,
	['translator#-first'] = true,
	['translator-last#'] = true,
	['translator#-last'] = true,
	['translator-given#'] = true,
	['translator#-given'] = true,
	['translator-surname#'] = true,
	['translator#-surname'] = true,
	['translator-link#'] = true,
	['translator#-link'] = true,
	['translator-mask#'] = true,
	['translator#-mask'] = true,
}

--[[--------------------------< C I T E   A R X I V   S U P P O R T E D   P A R A M E T E R S >----------------

This is an experiment that attempts to use validate() and a limited list of valid parameters to validate the
parameters provided in a cite arxiv template.  This method might be expanded to other templates being considered.

Because a steady-state signal conveys no useful information, whitelist.basic_arguments[] list items can have three values:
	true - these parameters are valid and supported parameters
	false - these parameters are deprecated but still supported
	nil - these parameters are no longer supported (when setting a parameter to nil, leave a comment stating the reasons for invalidating the parameter)
	
]]

--[[
This is a list of parameters that once were but now are no longer supported:
	['ARXIV'] = nil,				-- not an initialization
	['version'] = nil,				-- this is the cite arxiv parameter; |version= still supported by other cs1|2 templates

]]

local arxiv_basic_arguments = {
	['arxiv'] = true,
	['class'] = true,															-- cite arxiv and arxiv identifiers
	['eprint'] = true,															-- cite arxiv and arxiv identifiers
}


--[[--------------------------< C I T E   B I O R X I V   S U P P O R T E D   P A R A M E T E R S >------------

This is an experiment that attempts to use validate() and a limited list of valid parameters to validate the
parameters provided in a cite biorxiv template.  This method might be expanded to other templates being considered.

Because a steady-state signal conveys no useful information, whitelist.basic_arguments[] list items can have three values:
	true - these parameters are valid and supported parameters
	false - these parameters are deprecated but still supported
	nil - these parameters are no longer supported (when setting a parameter to nil, leave a comment stating the reasons for invalidating the parameter)
	
]]

local biorxiv_basic_arguments = {
	['biorxiv'] = true,
}


--[[--------------------------< C I T E   C I T E S E E R X   S U P P O R T E D   P A R A M E T E R S >--------

This is an experiment that attempts to use validate() and a limited list of valid parameters to validate the
parameters provided in a cite citeseerx template.  This method might be expanded to other templates being considered.

Because a steady-state signal conveys no useful information, whitelist.basic_arguments[] list items can have three values:
	true - these parameters are valid and supported parameters
	false - these parameters are deprecated but still supported
	nil - these parameters are no longer supported (when setting a parameter to nil, leave a comment stating the reasons for invalidating the parameter)
	
]]

local citeseerx_basic_arguments = {
	['citeseerx'] = true,
}


--[[--------------------------< L I M I T E D   S U P P O R T E D   P A R A M E T E R S >----------------------

This is an experiment that attempts to use validate() and a limited list of valid parameters to validate the
parameters provided in a cite arxiv, cite biorxiv, or cite citeseerx templates.  These parameters are common to
all three templates

Because a steady-state signal conveys no useful information, whitelist.basic_arguments[] list items can have three values:
	true - these parameters are valid and supported parameters
	false - these parameters are deprecated but still supported
	nil - these parameters are no longer supported (when setting a parameter to nil, leave a comment stating the reasons for invalidating the parameter)
	
]]

local limited_basic_arguments = {
	['at'] = true,
	['author'] = true,
	['author-first'] = true,
	['author-last'] = true,
	['authorlink'] = true,
	['author-link'] = true,
	['authormask'] = true,
	['author-mask'] = true,
	['authors'] = true,
	['collaboration'] = true,
	['date'] = true,
	['df'] = true,
	['display-authors'] = true,
	['first'] = true,
	['given'] = true,
	['language'] = true,
	['last'] = true,
	['lastauthoramp'] = true,
	['last-author-amp'] = true,
	['mode'] = true,
	['name-list-format'] = true,
	['nocat'] = true,
	['no-cat'] = true,
	['notracking'] = true,
	['no-tracking'] = true,
	['p'] = true,
	['page'] = true,
	['pages'] = true,
	['postscript'] = true,
	['pp'] = true,
	['quotation'] = true,
	['quote'] = true,
	['ref'] = true,
	['surname'] = true,
	['template-doc-demo'] = true,
	['title'] = true,
	['url'] = true,
	['URL'] = true,
	['vauthors'] = true,
	['year'] = true,
}
local limited_numbered_arguments = {
	['author#'] = true,
	['author-first#'] = true,
	['author#-first'] = true,
	['author-last#'] = true,
	['author#-last'] = true,
	['author-link#'] = true,
	['author#link'] = true,
	['author#-link'] = true,
	['authorlink#'] = true,
	['author-mask#'] = true,
	['author#mask'] = true,
	['author#-mask'] = true,
	['authormask#'] = true,
	['first#'] = true,
	['given#'] = true,
	['last#'] = true,
	['surname#'] = true,
}

return {
	basic_arguments = basic_arguments,
	numbered_arguments = numbered_arguments,
	limited_basic_arguments = limited_basic_arguments,
	limited_numbered_arguments = limited_numbered_arguments,
	arxiv_basic_arguments = arxiv_basic_arguments,
	biorxiv_basic_arguments = biorxiv_basic_arguments,
	citeseerx_basic_arguments = citeseerx_basic_arguments
};