Module:Navbar: Difference between revisions
Jump to navigation
Jump to search
ArrowHead294 (talk | contribs) mNo edit summary |
ArrowHead294 (talk | contribs) mNo edit summary |
||
(20 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
local p = {} | |||
local ordinal = require("Module:Ordinal")._ordinal | local ordinal = require("Module:Ordinal")._ordinal | ||
local yesno = require("Module:Yesno") | |||
-- Main function called by navigation box templates | |||
function p._navbar(name, mode, text, namespace) | function p._navbar(name, mode, text, namespace) | ||
mode = mode or "" | mode = mode or "" | ||
Line 8: | Line 10: | ||
namespace = namespace or "Template" | namespace = namespace or "Template" | ||
local p_name = | local p_name = string.format("%s:%s", namespace, name) | ||
local p_talk_name = | local p_talk_name = string.format("%s talk:%s", namespace, name) | ||
local p_edit_name = "Special:EditPage/" .. | local p_edit_name = "Special:EditPage/" .. p_name | ||
local s = " • " | |||
local links = (mode == mini and {"V", "T", "E"} or {"View", "Talk", "Edit"}) | |||
return "<span style=\"font-size: 0.75em; font-weight: normal; font-style: normal;\">" | return "<span style=\"font-size: 0.75em; font-weight: normal; font-style: normal;\">" | ||
.. | .. string.format("%s[[%s|%s]]%s[[%s|%s]]%s[[%s|%s]]", | ||
text, p_name, links[1], s, p_talk_name, links[2], s, p_edit_name, links[3]) | |||
.. "</span>" | .. "</span>" | ||
end | end | ||
-- Wrapper function for [[Template:Navbar]] | |||
function p.navbar(frame) | function p.navbar(frame) | ||
local name = frame.args["name"] | local name = frame.args["name"] | ||
Line 25: | Line 28: | ||
local mode = frame.args["mode"] | local mode = frame.args["mode"] | ||
local text = frame.args["text"] | local text = frame.args["text"] | ||
local debugg = frame.args["debug"] | |||
local result = p._navbar(name, mode, text, namespace) | |||
-- Debugger option | |||
if debugg == true then | |||
result = "<syntaxhighlight lang=\"wikitext\">" .. result .. "</syntaxhighlight>" | |||
end | |||
return | return frame:preprocess(result) | ||
end | end | ||
-- Navbox for lumatone mappings | |||
function p.lumatone_map(frame) | function p.lumatone_map(frame) | ||
local | local debugg = yesno(frame.args["debug"]) | ||
local x = tonumber(frame.args["edo"]:match("(%d+)")) | |||
local x = tonumber(frame.args["edo"]) | |||
local thresh = 5 | local thresh = 5 | ||
local | local idxn1 = x - 1 | ||
.. "|name=Navbox Lumatone" | local idxn2 = x - 2 | ||
.. "|Title=[[Lumatone|Lumatone mappings]]" | local idxn3 = x - 3 | ||
.. "|Data 1={{ | local idx1 = x + 1 | ||
local idx2 = x + 2 | |||
local idx3 = x + 3 | |||
local result = "<br />{{Navbox\n" | |||
.. "| name = Navbox Lumatone\n" | |||
.. "| Title = [[Lumatone|Lumatone mappings]]\n" | |||
.. "| Data 1 = {{centre|" | |||
if | if x >= thresh + 4 then | ||
result = result .. "'''←''' " | |||
end | end | ||
if x >= thresh + 3 then | |||
result = result .. string.format("[[Lumatone mapping for %sedo|%sedo]] • ", idxn3, idxn3) | |||
end | |||
if x >= thresh + 2 then | |||
result = result .. string.format("[[Lumatone mapping for %sedo|%sedo]] • ", idxn2, idxn2) | |||
end | |||
if x >= thresh + 1 then | |||
result = result .. string.format("[[Lumatone mapping for %sedo|%sedo]] • ", idxn1, idxn1) | |||
end | |||
result = result | |||
.. string.format("'''Lumatone mapping for %sedo''' • ", x) | |||
.. string.format("[[Lumatone mapping for %sedo|%sedo]] • ", idx1, idx1) | |||
.. string.format("[[Lumatone mapping for %sedo|%sedo]] • ", idx2, idx2) | |||
.. string.format("[[Lumatone mapping for %sedo|%sedo]] '''→'''}}\n", idx3, idx3) | |||
.. "}}" | |||
return | -- Debugger option | ||
if debugg == true then | |||
result = "<syntaxhighlight lang=\"wikitext\">" .. result .. "</syntaxhighlight>" | |||
end | |||
return frame:preprocess(result) | |||
end | end | ||
-- Navbox for fractional-octave temperaments | |||
function p.frac_octave(frame) | function p.frac_octave(frame) | ||
local | local arpn = frame:preprocess("{{ARTICLEROOTPAGENAME}}") | ||
local a = | local debugg = yesno(frame.args["debug"]) | ||
local a = arpn:match("(%d+)%a+[%s%-]*") | |||
local x = tonumber(frame.args["f"]) or tonumber(a) | local x = tonumber(frame.args["f"]) or tonumber(a) | ||
local thresh = 2 | |||
local idxn1 = ordinal(x - 1) | |||
local idxn2 = ordinal(x - 2) | |||
local idxn3 = ordinal(x - 3) | |||
local idxn4 = ordinal(x - 4) | |||
local idx1 = ordinal(x + 1) | |||
local idx2 = ordinal(x + 2) | |||
local idx3 = ordinal(x + 3) | |||
local idx4 = ordinal(x + 4) | |||
local result = "<br />{{Navbox\n" | |||
.. "| name = Navbox fractional-octave\n" | |||
.. "| Title = [[Fractional-octave temperaments]]\n" | |||
.. "| Data 1 = {{centre|" | |||
if x >= thresh + 4 then | |||
result = result .. "'''←''' " | |||
end | |||
if x >= thresh + 3 then | |||
result = result .. string.format("[[%s-octave temperaments|%s]] • ", idxn4, idxn4) | |||
end | |||
if x >= thresh + 2 then | |||
result = result .. string.format("[[%s-octave temperaments|%s]] • ", idxn3, idxn3) | |||
end | |||
if x >= thresh + 1 then | |||
result = result .. string.format("[[%s-octave temperaments|%s]] • ", idxn2, idxn2) | |||
end | |||
if x >= thresh then | |||
result = result .. string.format("[[%s-octave temperaments|%s]] • ", idxn1, idxn1) | |||
end | |||
result = result | |||
.. string.format("'''%s-octave''' • ", ordinal(x)) | |||
.. string.format("[[%s-octave temperaments|%s]] • ", idx1, idx1) | |||
.. string.format("[[%s-octave temperaments|%s]] • ", idx2, idx2) | |||
.. string.format("[[%s-octave temperaments|%s]] • ", idx3, idx3) | |||
.. string.format("[[%s-octave temperaments|%s]] '''→'''}}\n", idx4, idx4) | |||
.. "}}" | |||
-- Debugger option | |||
if debugg == true then | |||
result = "<syntaxhighlight lang=\"wikitext\">" .. result .. "</syntaxhighlight>" | |||
end | |||
return frame:preprocess(result) | |||
end | end | ||
return p | return p |
Latest revision as of 12:55, 1 June 2025
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 p = {}
local ordinal = require("Module:Ordinal")._ordinal
local yesno = require("Module:Yesno")
-- Main function called by navigation box templates
function p._navbar(name, mode, text, namespace)
mode = mode or ""
text = (text == nil and "" or text .. " ")
namespace = namespace or "Template"
local p_name = string.format("%s:%s", namespace, name)
local p_talk_name = string.format("%s talk:%s", namespace, name)
local p_edit_name = "Special:EditPage/" .. p_name
local s = " • "
local links = (mode == mini and {"V", "T", "E"} or {"View", "Talk", "Edit"})
return "<span style=\"font-size: 0.75em; font-weight: normal; font-style: normal;\">"
.. string.format("%s[[%s|%s]]%s[[%s|%s]]%s[[%s|%s]]",
text, p_name, links[1], s, p_talk_name, links[2], s, p_edit_name, links[3])
.. "</span>"
end
-- Wrapper function for [[Template:Navbar]]
function p.navbar(frame)
local name = frame.args["name"]
local namespace = frame.args["namespace"]
local mode = frame.args["mode"]
local text = frame.args["text"]
local debugg = frame.args["debug"]
local result = p._navbar(name, mode, text, namespace)
-- Debugger option
if debugg == true then
result = "<syntaxhighlight lang=\"wikitext\">" .. result .. "</syntaxhighlight>"
end
return frame:preprocess(result)
end
-- Navbox for lumatone mappings
function p.lumatone_map(frame)
local debugg = yesno(frame.args["debug"])
local x = tonumber(frame.args["edo"]:match("(%d+)"))
local thresh = 5
local idxn1 = x - 1
local idxn2 = x - 2
local idxn3 = x - 3
local idx1 = x + 1
local idx2 = x + 2
local idx3 = x + 3
local result = "<br />{{Navbox\n"
.. "| name = Navbox Lumatone\n"
.. "| Title = [[Lumatone|Lumatone mappings]]\n"
.. "| Data 1 = {{centre|"
if x >= thresh + 4 then
result = result .. "'''←''' "
end
if x >= thresh + 3 then
result = result .. string.format("[[Lumatone mapping for %sedo|%sedo]] • ", idxn3, idxn3)
end
if x >= thresh + 2 then
result = result .. string.format("[[Lumatone mapping for %sedo|%sedo]] • ", idxn2, idxn2)
end
if x >= thresh + 1 then
result = result .. string.format("[[Lumatone mapping for %sedo|%sedo]] • ", idxn1, idxn1)
end
result = result
.. string.format("'''Lumatone mapping for %sedo''' • ", x)
.. string.format("[[Lumatone mapping for %sedo|%sedo]] • ", idx1, idx1)
.. string.format("[[Lumatone mapping for %sedo|%sedo]] • ", idx2, idx2)
.. string.format("[[Lumatone mapping for %sedo|%sedo]] '''→'''}}\n", idx3, idx3)
.. "}}"
-- Debugger option
if debugg == true then
result = "<syntaxhighlight lang=\"wikitext\">" .. result .. "</syntaxhighlight>"
end
return frame:preprocess(result)
end
-- Navbox for fractional-octave temperaments
function p.frac_octave(frame)
local arpn = frame:preprocess("{{ARTICLEROOTPAGENAME}}")
local debugg = yesno(frame.args["debug"])
local a = arpn:match("(%d+)%a+[%s%-]*")
local x = tonumber(frame.args["f"]) or tonumber(a)
local thresh = 2
local idxn1 = ordinal(x - 1)
local idxn2 = ordinal(x - 2)
local idxn3 = ordinal(x - 3)
local idxn4 = ordinal(x - 4)
local idx1 = ordinal(x + 1)
local idx2 = ordinal(x + 2)
local idx3 = ordinal(x + 3)
local idx4 = ordinal(x + 4)
local result = "<br />{{Navbox\n"
.. "| name = Navbox fractional-octave\n"
.. "| Title = [[Fractional-octave temperaments]]\n"
.. "| Data 1 = {{centre|"
if x >= thresh + 4 then
result = result .. "'''←''' "
end
if x >= thresh + 3 then
result = result .. string.format("[[%s-octave temperaments|%s]] • ", idxn4, idxn4)
end
if x >= thresh + 2 then
result = result .. string.format("[[%s-octave temperaments|%s]] • ", idxn3, idxn3)
end
if x >= thresh + 1 then
result = result .. string.format("[[%s-octave temperaments|%s]] • ", idxn2, idxn2)
end
if x >= thresh then
result = result .. string.format("[[%s-octave temperaments|%s]] • ", idxn1, idxn1)
end
result = result
.. string.format("'''%s-octave''' • ", ordinal(x))
.. string.format("[[%s-octave temperaments|%s]] • ", idx1, idx1)
.. string.format("[[%s-octave temperaments|%s]] • ", idx2, idx2)
.. string.format("[[%s-octave temperaments|%s]] • ", idx3, idx3)
.. string.format("[[%s-octave temperaments|%s]] '''→'''}}\n", idx4, idx4)
.. "}}"
-- Debugger option
if debugg == true then
result = "<syntaxhighlight lang=\"wikitext\">" .. result .. "</syntaxhighlight>"
end
return frame:preprocess(result)
end
return p