Module:Infobox interval: Difference between revisions

ArrowHead294 (talk | contribs)
mNo edit summary
Squib (talk | contribs)
m maybe i should discuss this before editing a template lol.
Tags: Undo Mobile edit Mobile web edit Advanced mobile edit
 
(7 intermediate revisions by 5 users not shown)
Line 1: Line 1:
local p = {}
local p = {}
local he = require("Module:Harmonic entropy")
local infobox = require("Module:Infobox")
local rat = require("Module:Rational")
local rat = require("Module:Rational")
local utils = require("Module:Utils")
local utils = require("Module:Utils")
local he = require("Module:Harmonic entropy")
local infobox = require("Module:Infobox")
local yesno = require("Module:Yesno")
local yesno = require("Module:Yesno")


Line 111: Line 111:
end
end
if rat.is_harmonic(ratio) then
if rat.is_harmonic(ratio) then
num, den = rat.as_pair (ratio)
table.insert(special_properties, "[[harmonic]]")
table.insert(special_properties, "[[harmonic]]")
num, den = rat.as_pair (ratio)
cats = cats .. "[[Category:Harmonics|" .. string.rep("#", string.len(num)) .. "]]"
cats = cats .. "[[Category:Harmonics|" .. string.rep("#", string.len(num)) .. "]]"
if rat.is_prime(ratio) then
table.insert(special_properties, "[[prime harmonic]]")
cats = cats .. "[[Category:Prime harmonics|" .. string.rep("#", string.len(num)) .. "]]"
end
if rat.is_highly_composite(ratio) then
table.insert(special_properties, "[[highly composite harmonic]]")
cats = cats .. "[[Category:Highly composite harmonics|" .. string.rep("#", string.len(num)) .. "]]"
end
elseif rat.is_harmonic(ratio, true, not small) then
elseif rat.is_harmonic(ratio, true, not small) then
table.insert(special_properties, "[[Harmonic|reduced harmonic]]")
table.insert(special_properties, "[[Harmonic|reduced harmonic]]")
Line 144: Line 152:
-- there was a subsequence of 4+ zeros
-- there was a subsequence of 4+ zeros
table.insert(infobox_data, {
table.insert(infobox_data, {
"[[Smonzos and svals|Subgroup monzo]]",
"[[Subgroup monzos and vals|Subgroup monzo]]",
rat.as_subgroup_ket(ratio, frame),
rat.as_subgroup_ket(ratio, frame),
})
})
Line 193: Line 201:
name = name:gsub(",%s+", ",")
name = name:gsub(",%s+", ",")
-- placing line breaks after commas
-- placing line breaks after commas
name = name:gsub(",", ",<br />")
name = name:gsub(",", ",<br>")
end
end
table.insert(infobox_data, {
table.insert(infobox_data, {
Line 210: Line 218:
if value_provided(colour_name) then
if value_provided(colour_name) then
table.insert(infobox_data, {
table.insert(infobox_data, {
"[[Color notation|Color name]]",
"[[Kite's color notation|Color name]]",
colour_name,
colour_name,
})
})
Line 250: Line 258:
table.insert(infobox_data, {
table.insert(infobox_data, {
"Special properties",
"Special properties",
table.concat(special_properties, ",<br />"),
table.concat(special_properties, ",<br>"),
})
})
end
end
Line 257: Line 265:
if rational and regular then
if rational and regular then
table.insert(infobox_data, {
table.insert(infobox_data, {
"[[Tenney height]] (log<sub>2</sub> ''nd'')",
"[[Tenney norm]] (log<sub>2</sub> ''nd'')",
utils._round(rat.tenney_height(ratio), 6),
utils._round(rat.tenney_height(ratio), 6),
})
})
table.insert(infobox_data, {
table.insert(infobox_data, {
"[[Weil height]] (log<sub>2</sub> max(''n'', ''d''))",
"[[Weil norm]] (log<sub>2</sub> max(''n'', ''d''))",
utils._round(rat.weil_height(ratio), 6),
utils._round(rat.weil_height(ratio), 6),
})
})
table.insert(infobox_data, {
table.insert(infobox_data, {
"[[Wilson height]] (sopfr(''nd''))",
"[[Wilson norm]] (sopfr(''nd''))",
utils._round(rat.wilson_height(ratio), 6),
utils._round(rat.wilson_height(ratio), 6),
})
})
end
end


if regular then
local harmonic_entropy = frame.args["Harmonic entropy"]
table.insert(infobox_data, {
if regular and value_provided(harmonic_entropy) then
"[[Harmonic entropy]]<br />(Shannon, <math>\\sqrt{nd}</math>)",
harmonic_entropy_switch = harmonic_entropy:match("^[Yy][Ee][Ss]$")
"~" .. utils._round(he.harmonic_entropy(cents), 6) .. " bits",
if harmonic_entropy_switch then
})
table.insert(infobox_data, {
"[[Harmonic entropy]]<br>(Shannon, <math>\\sqrt{nd}</math>)",
"~" .. utils._round(he.harmonic_entropy(cents), 6) .. " bits",
})
end
end
end


Line 306: Line 318:
local S_expressions = rat.find_S_expression(ratio)
local S_expressions = rat.find_S_expression(ratio)
if #S_expressions > 0 then
if #S_expressions > 0 then
local caption = "[[Square superparticular|S-expression]]"
local caption = "[[S-expression]]"
if #S_expressions > 1 then
if #S_expressions > 1 then
caption = caption .. "s"
caption = caption .. "s"
Line 312: Line 324:
table.insert(infobox_data, {
table.insert(infobox_data, {
caption,
caption,
table.concat(S_expressions, ",<br />"),
table.concat(S_expressions, ",<br>"),
})
})
end
end
Line 321: Line 333:
cats = cats .. "[[Category:Pages with internal sound examples]]"
cats = cats .. "[[Category:Pages with internal sound examples]]"
table.insert(infobox_data, {
table.insert(infobox_data, {
"[[File:" .. sound .. "|270px]]<br /><span style=\"font-size: 75%;\">[[:File:" .. sound .. "|<nowiki>[sound info]</nowiki>]]</span>",
"[[File:" .. sound .. "|270px]]<br><span style=\"font-size: 75%;\">[[:File:" .. sound .. "|<nowiki>[sound info]</nowiki>]]</span>",
})
})
elseif debug_mode and debug_mode ~= "hide" and regular then
elseif debug_mode and debug_mode ~= "hide" and regular then
Line 362: Line 374:
end
end


local result = infobox.build("<u>Interval&nbsp;information</u>", infobox_data) .. cats
local result = infobox.build("<u>Interval&nbsp;information</u>", infobox_data)
return frame:preprocess(debug_mode == true and "<pre>" .. result .. "</pre>" or result)
if not debug_mode then
result = result .. cats
end
return frame:preprocess(result)
end
end


return p
return p