Module:About-canon: Difference between revisions

From TSP Encyclopedia
Jump to navigation Jump to search
(bugfix maybe??)
(refactor for automatic detection of current page organization)
 
(19 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 10: Line 11:
mArguments = require('Module:Arguments')
mArguments = require('Module:Arguments')
args = mArguments.getArgs(frame)
args = mArguments.getArgs(frame)
if args[1] == "password" then
return "Hello"
end
return p._about(args)
return p._about(args)
end
end
Line 37: 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 50: 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")
if args[i] == "P" then
table.insert(args2, pageNameBase .. " in Pacifica")
table.insert(args2, pageNameBase .. " (Pacifica)")
table.insert(args2, pageNameBase .. " (Pacifica)")
elseif args[i] == "N" or args[i] == "M" 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
table.insert(args2, pageNameBase .. " in the A1-0 canon")
table.insert(args2, pageNameBase .. " (A1-0)")
else
else
table.insert(args2, pageNameBase .. " in " .. args[i])
table.insert(args2, pageNameBase .. " in the " .. arg .. " canon")
table.insert(args2, pageNameBase .. " (" .. args[i] .. ")")
table.insert(args2, pageNameBase .. " (" .. arg .. ")")
end
end
end
end
mw.log(mHatList._forSee(args2, 2, fsOptions))
-- Set for-see list
-- Set for-see list

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