Module:Infobox AFDO: Difference between revisions
Jump to navigation
Jump to search
Trying to make it so that “fifth” doesn’t show up when “sharp dual fifth” and “flat dual fifth” show up, because then it is being shown twice which is redundant. I will check the afdo pages immediately to see if it has broken them, and will undo immediately if it has Tags: Mobile edit Mobile web edit Advanced mobile edit |
m Bugfix |
||
| (6 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local getArgs = require("Module:Arguments").getArgs | |||
local infobox = require("Module:Infobox") | |||
local u = require("Module:Utils") | local u = require("Module:Utils") | ||
local | local yesno = require("Module:Yesno") | ||
function p.infobox_AFDO(frame) | function p.infobox_AFDO(frame) | ||
local args = getArgs(frame) | |||
-- debug mode will disable the categories | -- debug mode will disable the categories | ||
local debug_mode = frame.args["debug"] | local debug_mode = yesno(frame.args["debug"] or args["debug"], false) | ||
local wtext = yesno(frame.args["wtext"] or args["wtext"]) | |||
local categories = "" | local categories = "" | ||
| Line 31: | Line 36: | ||
}) | }) | ||
if(dualfifth) then | if (dualfifth) then | ||
table.insert(infobox_data, { | table.insert(infobox_data, { | ||
"Dual sharp fifth", | "Dual sharp fifth", | ||
| Line 48: | Line 53: | ||
end | end | ||
if (special_properties ~= "") then | |||
table.insert(infobox_data, {"Special properties", special_properties}) | table.insert(infobox_data, {"Special properties", special_properties}) | ||
end | end | ||
local result = infobox.build( | local result = infobox.build( | ||
"[[ | string.format("[[%safdo]]", steps), | ||
infobox_data, | infobox_data, | ||
"[[ | string.format("[[%safdo|← %safdo]]", steps - 1, steps - 1), | ||
"[[ | string.format("[[%safdo|%safdo →]]", steps + 1, steps + 1) | ||
) | ) | ||
| Line 62: | Line 67: | ||
result = result .. categories | result = result .. categories | ||
end | end | ||
return result | |||
if wtext then | |||
result = "<syntaxhighlight lang=\"wikitext\">" .. result .. "</syntaxhighlight>" | |||
end | |||
return frame:preprocess(result) | |||
end | end | ||
return p | return p | ||
Latest revision as of 14:56, 15 December 2025
- This module should not be invoked directly; use its corresponding template instead: Template:Infobox AFDO.
Generates an infobox providing information about a given arithmetic frequency division of the octave.
| Introspection summary for Module:Infobox AFDO | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||||||||||||||
No function descriptions were provided. The Lua code may have further information.
local p = {}
local getArgs = require("Module:Arguments").getArgs
local infobox = require("Module:Infobox")
local u = require("Module:Utils")
local yesno = require("Module:Yesno")
function p.infobox_AFDO(frame)
local args = getArgs(frame)
-- debug mode will disable the categories
local debug_mode = yesno(frame.args["debug"] or args["debug"], false)
local wtext = yesno(frame.args["wtext"] or args["wtext"])
local categories = ""
local steps = frame.args["steps"]
local stepnum = tonumber(steps)
local dualfifth = stepnum % 2 == 1
local fifth = steps+math.ceil(steps/2)
local special_properties = ""
categories = categories .. "[[Category:AFDO|" .. string.rep("#", string.len (stepnum)) .. "]]"
-- prime test
local prime = ""
if u.is_prime(stepnum) then
prime = " (prime)"
-- if rat.eq(et.equave, 2) then
categories = categories .. "[[Category:Prime AFDO|" .. string.rep("#", string.len (stepnum)) .. "]]"
-- end
end
local infobox_data = {}
table.insert(infobox_data, {
"Prime factorization",
u._prime_factorization(stepnum) .. prime
})
if (dualfifth) then
table.insert(infobox_data, {
"Dual sharp fifth",
fifth .. "/" .. steps .. " (" .. math.floor(math.log(fifth / steps) / math.log(2) * 1200 * 1000) / 1000 .. "c)"
})
table.insert(infobox_data, {
"Dual flat fifth",
(fifth-1) .. "/" .. steps .. " (" .. math.floor(math.log((fifth - 1) / steps) / math.log(2) * 1200 * 1000) / 1000 .. "c)"
})
else
table.insert(infobox_data, {
"Fifth",
fifth .. "/" .. steps .. " (" .. math.floor(math.log(fifth / steps) / math.log(2) * 1200 * 1000) / 1000 .. "c)"
})
end
if (special_properties ~= "") then
table.insert(infobox_data, {"Special properties", special_properties})
end
local result = infobox.build(
string.format("[[%safdo]]", steps),
infobox_data,
string.format("[[%safdo|← %safdo]]", steps - 1, steps - 1),
string.format("[[%safdo|%safdo →]]", steps + 1, steps + 1)
)
if not debug_mode then
result = result .. categories
end
if wtext then
result = "<syntaxhighlight lang=\"wikitext\">" .. result .. "</syntaxhighlight>"
end
return frame:preprocess(result)
end
return p