Module:Infobox chord: Difference between revisions

Bcmills (talk | contribs)
No edit summary
Bcmills (talk | contribs)
No edit summary
Line 13: Line 13:
local infobox_data = {}
local infobox_data = {}
local cats = ""
local cats = ""
local errors = ""


local name = frame.args["Name"]
local name = frame.args["Name"]
Line 41: Line 40:
for hs in string.gmatch(frame.args["Harmonics"], "[^:]+") do
for hs in string.gmatch(frame.args["Harmonics"], "[^:]+") do
h = tonumber(hs)  -- TODO: support rational entries?
h = tonumber(hs)  -- TODO: support rational entries?
if h == nil or h < 1 then
assert(h > 0, "invalid harmonic")
errors = errors .. "<p>error: invalid harmonic " .. hs .. "</p>"
table.insert(harmonics, h)
else
table.insert(harmonics, h)
end
end
local root = harmonics[1]
if root == nil and errors == "" then
errors = errors .. "<p>error: no harmonics found</p>"
end
if errors ~= "" then
return errors
end
end


Line 83: Line 72:
end
end
table.insert(infobox_data, {"Ratios", ratio_string})
table.insert(infobox_data, {"Harmonics", frame.args["Harmonics"]})
table.insert(infobox_data, {"Intervals from root", ratio_string})
table.insert(infobox_data, {"[[Prime limit]]", prime_limit})
table.insert(infobox_data, {"[[Prime limit]]", prime_limit})
table.insert(infobox_data, {"[[Odd limit]]", odd_limit})
table.insert(infobox_data, {"[[Odd limit]]", odd_limit})