Anonymous
×
Create a new article
Write your page title here:
We currently have 15 articles on TwistedFates Database. Type your article name above or click on one of the titles below and start writing!



    TwistedFates Database
    15Articles

    Documentation for this module may be created at Module:Main/doc

    --[[<pre>
    -- This module produces a link to a main article or articles. It implements the
    -- template {{main}}.
    -- 
    -- If the module is used in category or category talk space, it produces "The
    -- main article for this category is xxx". Otherwise, it produces
    -- "Main article: xxx".
    --]]
    
    local mHatnote = require('Module:Hatnote')
    local mTableTools -- lazily initialise
    local mArguments -- lazily initialise
    
    local p = {}
    
    function p.main(frame)
    	mTableTools = require('Module:TableTools')
    	mArguments = require('Module:Arguments')
    	local args = mArguments.getArgs(frame, {parentOnly = true})
    	local pages = {}
    	for k, v in pairs(args) do
    		if type(k) == 'number' then
    			local display = args['l' .. tostring(k)]
    			local page = {v, display}
    			pages[k] = page
    		end
    	end
    	pages = mTableTools.compressSparseArray(pages)
    	local options = {
    		selfref = args.selfref
    	}
    	return frame:preprocess(p._main(options, unpack(pages)))
    end
    
    function p._main(options, ...)
    	-- Get the list of pages. If no first page was specified we use the current
    	-- page name.
    	local pages = {...}
    	local currentTitle = mw.title.getCurrentTitle()
    	local firstPageTable = pages[1]
    	local firstPage
    	if firstPageTable then
    		firstPage = firstPageTable[1]
    	else
    		firstPage = currentTitle.text
    		firstPageTable = {firstPage}
    		pages[1] = firstPageTable
    	end
    
    	-- Find the pagetype.
    	local firstPageNs = mHatnote.findNamespaceId(firstPage)
    	local pagetype = firstPageNs == 0 and 'article' or 'page'
    
    	-- Make the formatted link text
    	local links = mHatnote.formatPageTables(unpack(pages))
    	links = mw.text.listToText(links)
    
    	-- Build the text.
    	local isPlural = #pages > 1
    	local currentNs = currentTitle.namespace
    	local isCategoryNamespace = currentNs - currentNs % 2 == 14
    	local stringToFormat
    	if isCategoryNamespace then
    		if isPlural then
    			stringToFormat = "The main %ss for this"
    				.. " [[Help:Category|category]] are %s"
    		else
    			stringToFormat = "The main %s for this"
    				.. " [[Help:Category|category]] is %s"
    		end
    	else
    		if isPlural then
    			stringToFormat = "&nbsp;&nbsp;''Main %ss: %s''"
    		else
    			stringToFormat = "&nbsp;&nbsp;''Main %s: %s''"
    		end
    	end
    	local text = string.format(stringToFormat, pagetype, links)
    
    	-- Process the options and pass the text to the _rellink function in
    	-- [[Module:Hatnote]].
    	options = options or {}
    	local hnOptions = {
    		extraclasses = 'relarticle mainarticle',
    		selfref = options.selfref
    	}
    	return mHatnote._hatnote(text, hnOptions)
    end
    
    return p