Difference between revisions of "Module:London Gazette util"

From blackwiki
Jump to navigation Jump to search
blackwiki>Trappist the monk
blackwiki>Trappist the monk
Line 47: Line 47:
 
set the value that is assigned to the cite magazine |type= parameter using the values of the London Gazette
 
set the value that is assigned to the cite magazine |type= parameter using the values of the London Gazette
 
|supp= and |display-supp= parameters
 
|supp= and |display-supp= parameters
<span style="font-size:100%; font-weight:normal" class="error">Empty name</span>
+
 
 +
row number in comments apply to the table in Template_talk:London_Gazette#Rewrite_as_wrapper_around_template:cite_news
 +
 
 
]]
 
]]
  
Line 58: Line 60:
 
 
 
if not is_set (args['display-supp']) and is_set (args.supp) then -- when only |supp= is set
 
if not is_set (args['display-supp']) and is_set (args.supp) then -- when only |supp= is set
if ('y' == args.supp) or ('yes' == args.supp) then
+
if ('y' == args.supp:lower()) or ('yes' == args.supp:lower()) then
 
return 'Supplement'; -- [row 2]  
 
return 'Supplement'; -- [row 2]  
 
elseif args.supp:match ('^%d%d?$') then -- one or two digits
 
elseif args.supp:match ('^%d%d?$') then -- one or two digits
Line 80: Line 82:
  
 
if args['display-supp']:match ('^%d%d?$') then
 
if args['display-supp']:match ('^%d%d?$') then
if ('y' == args.supp) or ('yes' == args.supp) then
+
if ('y' == args.supp:lower()) or ('yes' == args.supp:lower()) or (args['display-supp'] == args.supp) then
return ordinal (args['display-supp']) .. ' supplement'; -- [row 7]
+
return ordinal (args['display-supp']) .. ' supplement'; -- [rows 7, 8]
elseif args['display-supp'] == args.supp then
+
else -- |supp= is not a number or number isn't same as number in |display-supp=
return ordinal (args['display-supp']) .. ' supplement'; -- [row 8]
 
else -- |supp= is not a number or number doesn't match
 
 
return supp_error; -- [row 9]
 
return supp_error; -- [row 9]
 
end
 
end

Revision as of 14:07, 6 May 2017

Utility module for {{London Gazette}} {{#lst:Template:London Gazette/doc|supp_disp-supp_interaction_table}}



-- this module is created to support {{London Gazette}}

require('Module:No globals')
local getArgs = require('Module:Arguments').getArgs
local code_style="color:inherit; border:inherit; padding:inherit;";
local supp_error = '<span style="font-size:100%; font-weight:normal" class="error">invalid <code style="'..code_style..'">&#124;supp=</code></span>';

local p = {}

--[[--------------------------< I S _ S E T >------------------------------------------------------------------

Whether variable is set or not.  A variable is set when it is not nil and not empty.

]]

local function is_set( var )
	return not (var == nil or var == '');
end


--[[--------------------------< O R D I N A L >----------------------------------------------------------------

render a numerical text string in ordinal form suitable for English language use.  In this module, num_str is
limited by calling functions to the integer values 1-99.

TODO: use Module:Ordinal instead?

]]

local function ordinal (num_str)
	if num_str:match ('^1[1-3]$') then											-- do the 11-13 odd balls first to get them out of the way
		return num_str .. 'th';
	elseif '1' == num_str:match ('^%d?(%d)$') then								-- 1, 21, 31, 41, ... 91
		return num_str .. 'st';
	elseif '2' == num_str:match ('^%d?(%d)$') then								-- 2, 22, 32, 42, ... 92
		return num_str .. 'nd';
	elseif '3' == num_str:match ('^%d?(%d)$') then								-- 3, 23, 33, 43, ... 93
		return num_str .. 'rd';
	else
		return num_str .. 'th';													-- 4-9, 14-19, ... 94-99
	end
end


--[[--------------------------< T Y P E _ P A R A M >----------------------------------------------------------

set the value that is assigned to the cite magazine |type= parameter using the values of the London Gazette
|supp= and |display-supp= parameters

row number in comments apply to the table in Template_talk:London_Gazette#Rewrite_as_wrapper_around_template:cite_news

]]

function p.type_param (frame)
	local args = getArgs(frame);
	
	if not is_set (args['display-supp']) and not is_set (args.supp) then		-- when both |display-supp= and |supp= are not set
		return '';																-- [row 1]
	end
	
	if not is_set (args['display-supp']) and is_set (args.supp) then			-- when only |supp= is set
		if ('y' == args.supp:lower()) or ('yes' == args.supp:lower()) then
			return 'Supplement';												-- [row 2] 
		elseif args.supp:match ('^%d%d?$') then									-- one or two digits
			if '1' == args.supp then
				return 'Supplement';											-- [row 3]
			else
				return ordinal (args.supp) .. ' supplement';					-- [row 4]
			end
		else
			return supp_error;													-- [row 5] any other text not supported
		end
	end

	if is_set (args['display-supp']) and not is_set (args.supp) then			-- when only |display-supp= is set
		if args['display-supp']:match ('^%d%d?$') then							-- one or two digits
			return ordinal (args['display-supp']) .. ' supplement';				-- [row 6]
		else
			return args['display-supp'];										-- [row 10]
		end
	end

	if args['display-supp']:match ('^%d%d?$') then
		if ('y' == args.supp:lower()) or ('yes' == args.supp:lower()) or (args['display-supp'] == args.supp) then
			return ordinal (args['display-supp']) .. ' supplement';				-- [rows 7, 8]
		else																	-- |supp= is not a number or number isn't same as number in |display-supp=
			return supp_error;													-- [row 9]
		end
	else
		if ('y' == args.supp) or ('yes' == args.supp) then
			return args['display-supp'];										-- [row 11]
		else
			return supp_error;													-- [row ??]
		end
	end
end

return p;