Module:About-canon: Difference between revisions

From TSP Encyclopedia
Jump to navigation Jump to search
(whyyyyy)
(refactor for automatic detection of current page organization)
 
(6 intermediate revisions 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)
-- if args[1] == "password" then
-- return "Hello"
-- elseif args[2] == "password2" then
-- return "Hello2"
-- end
-- return args[1] .. args[2] .. args[3] .. "hellooooo"
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 47: 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 62: Line 50:
local args2 = {}
local args2 = {}
table.insert(args2, args[1])
table.insert(args2, args.current)
for i=2, #args do
for _,arg in ipairs(args) do
table.insert(args2, pageNameBase .. " in " .. args[i])
if string.lower(arg) == "p" then
table.insert(args2, pageNameBase .. " (" .. args[i] .. ")")
table.insert(args2, pageNameBase .. " in the Pacifica canon")
mw.log(args2[i])
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
end
mw.log(mHatList._forSee(args2, 2, fsOptions))
-- Set for-see list
-- Set for-see list
local forSee = mHatList._forSee(args2, 2, fsOptions)
local forSee = mHatList._forSee(args2, 2, fsOptions)
-- if args[2] == "P" then return "hellooooo from the other sideee" end
return #args


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


return p
return p

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