Module documentation[view] [edit] [history] [purge]

This module is used to store functions for templates that generate a navigation bar:

Template:Navbar also uses this module, even though it only generates View/Talk/Edit links.

To include this module in other modules, use local navbar = require("Module:Navbar")._navbar.

See also


local ordinal = require("Module:Ordinal")._ordinal

local p = {}

function p._navbar(name, mode, text, namespace)
	mode = mode or ""
	text = (text == nil and "" or text .. " ")
	namespace = namespace or "Template"
	
	local p_name = namespace .. ":" .. name
	local p_talk_name = namespace .. " talk:" .. name
	local p_edit_name = "Special:EditPage/" .. namespace .. ":".. name
	local s = ((mode == "v" or mode == "vmini") and "<br />" or " &bull; ")
	
	return "<span style=\"font-size: 0.75em; font-weight: normal; font-style: normal;\">"
		.. text
		.. ((mode == "mini" or mode == "vmini")
			and "[[" .. p_name .. "|V]]" .. s .. "[[" .. p_talk_name .. "|T]]" .. s .. "[[" .. p_edit_name .. "|E]]"
			or "[[" .. p_name .. "|View]]" .. s .. "[[" .. p_talk_name .. "|Talk]]" .. s .. "[[" .. p_edit_name .. "|Edit]]")
		.. "</span>"
end

function p.navbar(frame)
	local name = frame.args["name"]
	local namespace = frame.args["namespace"]
	local mode = frame.args["mode"]
	local text = frame.args["text"]
	
	return p._navbar(name, mode, text, namespace)
end

function p.lumatone_map(frame)
	local page_name = frame:preprocess("{{ARTICLESPACE}}:{{ROOTPAGENAME}}")
	local a = page_name:match("[Ll]umatone%s*[Mm]apping%s*[Ff]or%s*(%d+)%s*[Ee][Dd][2Oo]")
	local x = tonumber(frame.args["edo"]) or tonumber(a)
	local thresh = 5
	
	local out_str = frame:preprocess("<br />{{Navbox"
		.. "|name=Navbox Lumatone"
		.. "|Title=[[Lumatone|Lumatone mappings]]"
		.. "|Data 1={{center|"
		.. ((x >= thresh + 4) and "'''&larr;''' " or "")
		.. ((x >= thresh + 3) and "[[Lumatone mapping for " .. (x - 3) .. "edo|" .. (x - 3) .. "edo]] &bull; " or "")
		.. ((x >= thresh + 2) and "[[Lumatone mapping for " .. (x - 2) .. "edo|" .. (x - 2) .. "edo]] &bull; " or "")
		.. ((x >= thresh + 1) and "[[Lumatone mapping for " .. (x - 1) .. "edo|" .. (x - 1) .. "edo]] &bull; " or "")
		.. "'''Lumatone mapping for " .. x .. "edo''' &bull; "
		.. "[[Lumatone mapping for " .. (x + 1) .. "edo|" .. (x + 1) .. "edo]] &bull; "
		.. "[[Lumatone mapping for " .. (x + 2) .. "edo|" .. (x + 2) .. "edo]] &bull; "
		.. "[[Lumatone mapping for " .. (x + 3) .. "edo|" .. (x + 3) .. "edo]] '''&rarr;'''}}"
		.. "}}")
	
	if string.lower(page_name) ~= "template:navbox lumatone" then
		out_str = out_str .. " [[Category:Lumatone mappings]] [[Category:" .. x .. "edo]]"
	end

	local debugg = frame.args["debug"]
	return frame:preprocess(debugg == "true" and "<pre>" .. out_str .. "</pre>" or out_str)
end

function p.frac_octave(frame)
	local root_page_name = frame:preprocess("{{FULLROOTPAGENAME}}")
	local a = root_page_name:match("(%d+)%a+[%s%-]*[Oo]ctave%s*[Tt]emperament[s]?")
	local x = tonumber(frame.args["f"]) or tonumber(a)
	
	local out_str = frame:preprocess("<br />{{Navbox"
		.. "|name=Navbox fractional-octave"
		.. "|Title=[[Fractional-octave temperaments]]"
		.. "|Data 1={{center|"
		.. ((x >= 6) and "'''&larr;''' " or "")
		.. ((x >= 5) and "[[" .. ordinal(x - 4) .. "-octave temperaments|" .. ordinal(x - 4) .. "]] &bull; " or "")
		.. ((x >= 4) and "[[" .. ordinal(x - 3) .. "-octave temperaments|" .. ordinal(x - 3) .. "]] &bull; " or "")
		.. ((x >= 3) and "[[" .. ordinal(x - 2) .. "-octave temperaments|" .. ordinal(x - 2) .. "]] &bull; " or "")
		.. ((x >= 2) and "[[" .. ordinal(x - 1) .. "-octave temperaments|" .. ordinal(x - 1) .. "]] &bull; " or "")
		.. "'''" .. ordinal(x) .. "-octave''' &bull; "
		.. "[[" .. ordinal(x + 1) .. "-octave temperaments|" .. ordinal(x + 1) .. "]] &bull; "
		.. "[[" .. ordinal(x + 2) .. "-octave temperaments|" .. ordinal(x + 2) .. "]] &bull; "
		.. "[[" .. ordinal(x + 3) .. "-octave temperaments|" .. ordinal(x + 3) .. "]] &bull; "
		.. "[[" .. ordinal(x + 4) .. "-octave temperaments|" .. ordinal(x + 4) .. "]] '''&rarr;'''}}"
		.. "}}")
	local debugg = frame.args["debug"]
	return frame:preprocess(debugg == "true" and "<pre>" .. out_str .. "</pre>" or out_str)
end

return p