Module:About-canon: Difference between revisions

From TSP Encyclopedia
Jump to navigation Jump to search
(debug auto)
(refactor for automatic detection of current page organization)
 
(One intermediate revision by the same user not shown)
Line 11: Line 11:
mArguments = require('Module:Arguments')
mArguments = require('Module:Arguments')
args = mArguments.getArgs(frame)
args = mArguments.getArgs(frame)
return args[1]
return p._about(args)
-- return p._about(args)
end
end


Line 36: 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 51: Line 50:
local args2 = {}
local args2 = {}
table.insert(args2, args[1])
table.insert(args2, args.current)
for _,arg in ipairs(args) do
for _,arg in ipairs(args) do
if arg ~= args[1] then
if string.lower(arg) == "p" then
if string.lower(arg) == "p" then
table.insert(args2, pageNameBase .. " in the Pacifica canon")
table.insert(args2, pageNameBase .. " in the Pacifica canon")
table.insert(args2, pageNameBase .. " (Pacifica)")
table.insert(args2, pageNameBase .. " (Pacifica)")
elseif string.lower(arg) == "m" or string.lower(arg) == "n"  then
elseif string.lower(arg) == "m" or string.lower(arg) == "n"  then
table.insert(args2, pageNameBase .. " in NationStates")
table.insert(args2, pageNameBase .. " in NationStates")
table.insert(args2, pageNameBase)
table.insert(args2, pageNameBase)
elseif string.lower(arg) == "a" then
elseif string.lower(arg) == "a" then
table.insert(args2, pageNameBase .. " in the A1-0 canon")
table.insert(args2, pageNameBase .. " in the A1-0 canon")
table.insert(args2, pageNameBase .. " (A1-0)")
table.insert(args2, pageNameBase .. " (A1-0)")
else
else
table.insert(args2, pageNameBase .. " in the " .. arg .. " canon")
table.insert(args2, pageNameBase .. " in the " .. arg .. " canon")
table.insert(args2, pageNameBase .. " (" .. arg .. ")")
table.insert(args2, pageNameBase .. " (" .. arg .. ")")
end
end
end
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