Module:Namespace detect/data: Difference between revisions

    From Nonbinary Wiki
    m>Jackmcbarn
    (okay, it needs wrapping after all)
    m>Jackmcbarn
    (name return values)
    Line 66: Line 66:
    end
    end


    return { cfg, getParamMappings() }
    return { cfg = cfg, mappings = getParamMappings() }

    Revision as of 16:02, 20 March 2014

    Documentation for this module may be created at Module:Namespace detect/data/doc

    ----------------------------------------------------------------------------------------------------
    --                                          Configuration data                                    --
    --      Language-specific parameter names can be set here.                                        --
    ----------------------------------------------------------------------------------------------------
    
    local cfg = {}
    
    -- This parameter displays content for the main namespace:
    cfg.main = 'main'
    
    -- This parameter displays in talk namespaces:
    cfg.talk = 'talk'
    
    -- This parameter displays content for "other" namespaces (namespaces for which
    -- parameters have not been specified, or for when cfg.demospace is set to cfg.other):
    cfg.other = 'other'
    
    -- This parameter makes talk pages behave as though they are the corresponding subject namespace.
    -- Note that this parameter is used with [[Module:Yesno]]. Edit that module to change
    -- the default values of "yes", "no", etc.
    cfg.subjectns = 'subjectns'
    
    -- This parameter sets a demonstration namespace:
    cfg.demospace = 'demospace'
    
    -- This parameter sets a specific page to compare:
    cfg.page = 'page'
    
    -- The header for the namespace column in the wikitable containing the list of possible subject-space parameters.
    cfg.wikitableNamespaceHeader = 'Namespace'
    
    -- The header for the wikitable containing the list of possible subject-space parameters.
    cfg.wikitableAliasesHeader = 'Aliases'
    
    ----------------------------------------------------------------------------------------------------
    --                                       End configuration data                                   --
    ----------------------------------------------------------------------------------------------------
    
    local function getParamMappings()
    	--[[ Returns a table of how parameter names map to namespace names. The keys are the actual namespace 
    	  names, in lower case, and the values are the possible parameter names for that namespace, also in
    	  lower case. The table entries are structured like this:
    		{
    			[''] = {'main'},
    			['wikipedia'] = {'wikipedia', 'project', 'wp'},
    			...
    		}
    	]] 
    	local mappings = {}
    	mappings[mw.ustring.lower(mw.site.namespaces[0].name)] = {cfg.main}
    	mappings[cfg.talk] = {cfg.talk}
    	for nsid, ns in pairs(mw.site.subjectNamespaces) do
    		if nsid ~= 0 then -- Exclude main namespace.
    			local nsname = mw.ustring.lower(ns.name)
    			local canonicalName = mw.ustring.lower(ns.canonicalName)
    			mappings[nsname] = {nsname}
    			if canonicalName ~= nsname then
    				table.insert(mappings[nsname], canonicalName)
    			end
    			for _, alias in ipairs(ns.aliases) do
    				table.insert(mappings[nsname], mw.ustring.lower(alias))
    			end
    		end
    	end
    	return mappings
    end
    
    return { cfg = cfg, mappings = getParamMappings() }