Module:Infobox AFDO: Difference between revisions
CompactStar (talk | contribs) No edit summary |
m Bugfix |
||
| (26 intermediate revisions by 4 users not shown) | |||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local u = require( | local getArgs = require("Module:Arguments").getArgs | ||
local | local infobox = require("Module:Infobox") | ||
local u = require("Module:Utils") | |||
local yesno = require("Module:Yesno") | |||
function p.infobox_AFDO(frame) | function p.infobox_AFDO(frame) | ||
local steps = frame.args[ | 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 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 = {} | 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( | 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 result | return frame:preprocess(result) | ||
end | end | ||
return p | return p | ||