Module:About-canon: Difference between revisions

From TSP Encyclopedia
Jump to navigation Jump to search
(yet another temporary test)
(refactor for automatic detection of current page organization)
 
(16 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"
-- elseif args[2] == "password2" then
-- return "Hello2"
-- end
return p._about(args)
return p._about(args)
end
end


function p._about (args, options)
function p._about (args, options)
if args[1] == "password" then
return "Hello"
elseif args[2] == "password2" then
return "Hello2"
end
-- Produces "about" hatnote.
-- Produces "about" hatnote.


Line 45: 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 58: Line 48:
}
}
args2 = {}
local args2 = {}
local pageNameBase = mw.ustring.gsub( mw.title.getCurrentTitle().text, '%s+%b()$', '')
table.insert(args2, args[1])
table.insert(args2, args.current)
for i=2, #args do
for _,arg in ipairs(args) do
if string.lower(arg) == "p" then
if args[i] == "P" then
table.insert(args2, pageNameBase .. " in the Pacifica canon")
return "Hellooooo"
table.insert(args2, pageNameBase .. " (Pacifica)")
-- table.insert(args2, pageNameBase .. " in Pacifica")
elseif string.lower(arg) == "m" or string.lower(arg) == "n" then
-- table.insert(args2, pageNameBase .. " (Pacifica)")
table.insert(args2, pageNameBase .. " in NationStates")
elseif args[i] == "N" or args[i] == "M" then
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