Module:Infobox AFDO: Difference between revisions

From Xenharmonic Wiki
Jump to navigation Jump to search
Undo revision 184877 by ArrowHead294 (talk). The debug mode is used in several places on the wiki where categories should be disabled
Tag: Undo
m Bugfix
 
(2 intermediate revisions by one other user 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 infobox = require("Module:Infobox")
local yesno = require("Module:Yesno")
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 = yesno(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 32: Line 36:
})
})


     if(dualfifth) then
     if (dualfifth) then
     table.insert(infobox_data, {
     table.insert(infobox_data, {
"Dual sharp fifth",
"Dual sharp fifth",
Line 54: Line 58:


local result = infobox.build(
local result = infobox.build(
"[[" .. steps .. "afdo]]",
string.format("[[%safdo]]", steps),
infobox_data,
infobox_data,
"[[" .. (steps - 1) .. "afdo|← " .. (steps - 1) .. "afdo]]",
string.format("[[%safdo|← %safdo]]", steps - 1, steps - 1),
"[[" .. (steps + 1) .. "afdo|" .. (steps + 1) .. "afdo →]]"
string.format("[[%safdo|%safdo →]]", steps + 1, steps + 1)
)
)
if not debug_mode then
if not debug_mode then
result = result .. categories
result = result .. categories
end
if wtext then
result = "<syntaxhighlight lang=\"wikitext\">" .. result .. "</syntaxhighlight>"
end
end

Latest revision as of 14:56, 15 December 2025

Module documentation[view] [edit] [history] [purge]
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 
Functions provided (1)
Line Function Params
7 infobox_AFDO (invokable) (frame)
Lua modules required (4)
Variable Module Functions used
getArgs Module:Arguments getArgs
infobox Module:Infobox build
u Module:Utils is_prime
_prime_factorization
yesno Module:Yesno yesno

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|&larr;&nbsp;%safdo]]", steps - 1, steps - 1),
		string.format("[[%safdo|%safdo&nbsp;&rarr;]]", 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