Module:Sandbox/Trappist the monk/limits table

require ('strict');

local increment_values_t = {													-- table of recommended increment values OCLC = 70000000,															-- these values taken from historical update values at en.wikipedia OSTI = 10000, PMC = 200000, PMID = 500000, RFC = 300, SSRN = 100000, S2CID = 2000000, } local id_limits_data_t = {};													-- to hold identifier limits from the tabular data file in simple form local identifier_order_t = {};													-- a sequence of known identifiers for _, limit_t in ipairs (mw.ext.data.get ("CS1/Identifier limits.tab").data) do	-- build a simple table of those limits id_limits_data_t[limit_t[1]] = limit_t[2];									--  is identifier label;  is upper limit for that identifier table.insert (identifier_order_t, limit_t[1]);								-- add the identifier label to the order list end

table.sort (identifier_order_t);												-- ascending sort

--[[--< M A I N >--

Citation Style 1 and Citation Style 2 validate certain identifier values by making sure that these values are less than or equal to a specified upper limit. This is a very crude check which serves mostly to catch extraneous digits. Identifier values are not static so the limits listed in c:CS1/Identifier limits.tab must occasionally be updated.

This module creates a wikitable of suggested new values for these identifier limits. Essentially, the table holds values that are calculated from the current limits defined in c:CS1/Identifier limits.tab plus the values listed in the  table. The values in  are taken from previous manual updates at en.wikipedia en:Module:Citation/CS1/Configuration.

When updating c:CS1/Identifier limits.tab editors should only update those values the *need* to be updated. Please do not defeat the purpose of these limts by setting unreasonably high values.

]]

local function main local update_table = mw.html.create ("table")								-- create a wikitable of recommended update values :addClass ("wikitable") :attr ('style', 'float: right; margin-left:0.2em');						-- move it to the right

update_table:node (mw.html.create ('caption'):wikitext ('Suggested update values'));	-- add a table caption update_table:node (mw.html.create ("tr")									-- create a header row		:node (mw.html.create ("th"):attr ('style', 'width: 10em;'):wikitext ("Identifier"))		:node (mw.html.create ("th"):attr ('style', 'width: 10em;'):wikitext ("Value"))		); for _, identifier in ipairs (identifier_order_t) do							-- spin through the identifiers in order update_table:node (mw.html.create ("tr")								-- create a new table row			:node (mw.html.create ("td"):wikitext (identifier))					-- add the identifier			:node (mw.html.create ("td"):wikitext (id_limits_data_t[identifier] + increment_values_t[identifier]))	-- add the recommended value (current value + increment)			); end

return update_table:allDone;												-- and done end

----< E X P O R T S >

return { main = main }