Module:About-canon: Difference between revisions

From TSP Encyclopedia
Jump to navigation Jump to search
(add canon shortcut functionality)
(refactor for automatic detection of current page organization)
 
(23 intermediate revisions by the same user not shown)
Line 4: Line 4:
local libraryUtil = require('libraryUtil')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkType = libraryUtil.checkType
local pageNameBase = mw.ustring.gsub( mw.title.getCurrentTitle().text, '%s+%b()$', '')
local p = {}
local p = {}


Line 34: Line 35:
local pageType = (args.section and options.sectionString) or options.PageType
local pageType = (args.section and options.sectionString) or options.PageType
local about = ''
local about = ''
if args[1] then
if args.current then
about = string.format(options.aboutForm, pageType, args[1])
about = string.format(options.aboutForm, pageType, args.current)
end
end
Line 47: Line 48:
}
}
args2 = {}
local args2 = {}
local pageNameBase = mw.ustring.gsub( mw.title.getCurrentTitle().text, '%s+%b()$', '')
table.insert(args2, args.current)
table.insert(args2, args[1])
for _,arg in ipairs(args) do
if string.lower(arg) == "p" then
for i=2, #args do
table.insert(args2, pageNameBase .. " in the Pacifica canon")
table.insert(args2, pageNameBase .. " (Pacifica)")
local canonName
elseif string.lower(arg) == "m" or string.lower(arg) == "n" then
table.insert(args2, pageNameBase .. " in NationStates")
if     args[i] == "P"                   then canonName = "Pacifica"
table.insert(args2, pageNameBase)
elseif args[i] == "N" or args[i] == "M" then canonName = "NationStates"
elseif string.lower(arg) == "a" then
elseif args[i] == "A"                   then canonName = "A1-0"
table.insert(args2, pageNameBase .. " in the A1-0 canon")
table.insert(args2, pageNameBase .. " (A1-0)")
else
table.insert(args2, pageNameBase .. " in the " .. arg .. " canon")
table.insert(args2, pageNameBase .. " (" .. arg .. ")")
end
end
table.insert(args2, pageNameBase .. " in " .. args[i])
table.insert(args2, pageNameBase .. " (" .. args[i] .. ")")
end
end

Latest revision as of 02:57, 4 January 2022

Documentation for this module may be created at Module:About-canon/doc

local mArguments --initialize lazily
local mHatnote = require('Module:Hatnote')
local mHatList = require('Module:Hatnote list')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local pageNameBase = mw.ustring.gsub( mw.title.getCurrentTitle().text, '%s+%b()$', '')
local p = {}

function p.about (frame)
	-- A passthrough that gets args from the frame and all
	mArguments = require('Module:Arguments')
	args = mArguments.getArgs(frame)
	return p._about(args)
end

function p._about (args, options)
	-- Produces "about" hatnote.

	-- Type checks and defaults
	checkType('_about', 1, args, 'table', true)
	args = args or {}
	checkType('_about', 2, options, 'table', true)
	options = options or {}
	local defaultOptions = {
		aboutForm = 'This %s is about %s. ',
		PageType = require('Module:Pagetype').main(),
		otherText = nil, --included for complete list
		sectionString = 'section'
	}
	for k, v in pairs(defaultOptions) do
		if options[k] == nil then options[k] = v end
	end

	-- Set initial "about" string
	local pageType = (args.section and options.sectionString) or options.PageType
	local about = ''
	if args.current then
		about = string.format(options.aboutForm, pageType, args.current)
	end
	
	--Allow passing through certain options
	local fsOptions = {
		otherText = options.otherText,
		extratext = args.text
	}
	local hnOptions = {
		selfref = args.selfref
	}
	
	local args2 = {}
	
	table.insert(args2, args.current)
	
	for _,arg in ipairs(args) do
		if string.lower(arg) == "p" then
			table.insert(args2, pageNameBase .. " in the Pacifica canon")
			table.insert(args2, pageNameBase .. " (Pacifica)")
		elseif string.lower(arg) == "m" or string.lower(arg) == "n"  then
			table.insert(args2, pageNameBase .. " in NationStates")
			table.insert(args2, pageNameBase)
		elseif string.lower(arg) == "a" then
			table.insert(args2, pageNameBase .. " in the A1-0 canon")
			table.insert(args2, pageNameBase .. " (A1-0)")
		else
			table.insert(args2, pageNameBase .. " in the " .. arg .. " canon")
			table.insert(args2, pageNameBase .. " (" .. arg .. ")")
		end
	end
	
	-- Set for-see list
	local forSee = mHatList._forSee(args2, 2, fsOptions)

	-- Concatenate and return
	return mHatnote._hatnote(about .. forSee, hnOptions)
end

return p