Module:Scale tree: Difference between revisions

ArrowHead294 (talk | contribs)
Escape percent sign
ArrowHead294 (talk | contribs)
mNo edit summary
 
(29 intermediate revisions by 2 users not shown)
Line 1: Line 1:
local p = {}
local MOS = require("Module:MOS")
local MOS = require("Module:MOS")
local ET = require("Module:ET")
local ET = require("Module:ET")
local u = require("Module:Utils")
local rat = require("Module:Rational")
local rat = require("Module:Rational")
local sb = require("Module:SB tree")
local sb = require("Module:SB tree")
local utils = require("Module:Utils")
local utils = require("Module:Utils")
local yesno = require("Module:yesno")
local p = {}


-- Helper function that parses entries from a semicolon-delimited string and returns them in an array
-- Helper function that parses entries from a semicolon-delimited string and returns them in an array
Line 12: Line 12:
function p.parse_entries(unparsed)
function p.parse_entries(unparsed)
local parsed = {}
local parsed = {}
for entry in string.gmatch(unparsed, "([^;]+)") do
-- for entry in string.gmatch(unparsed, "([^;]+)") do
for entry in string.gmatch(unparsed, "([^%$]+)") do
local trimmed = entry:gsub("^%s*(.-)%s*$", "%1")
local trimmed = entry:gsub("^%s*(.-)%s*$", "%1")
table.insert(parsed, trimmed) -- Add to array
table.insert(parsed, trimmed) -- Add to array
Line 95: Line 96:
-- are proper if the step ratio is within the soft-of-basic range
-- are proper if the step ratio is within the soft-of-basic range
if n < s then
if n < s then
default_comments["2/1"] = default_comments["2/1"] .. "<br>Scales with tunings softer than this are proper"
default_comments["2/1"] = default_comments["2/1"] .. "<br />Scales with tunings softer than this are proper"
end
end
Line 112: Line 113:
-- - Step ratio and hardness
-- - Step ratio and hardness
-- - Comments
-- - Comments
local result = string.format("{| class=\"wikitable center-all\"\n")
local result = "{| class=\"wikitable center-all\"\n"
.. string.format("|+ style=\"font-size: 105%%;\" | Scale Tree and Tuning Spectrum of %s\n", mos_as_string)
.. "|+ style=\"font-size: 105%; white-space: nowrap;\" | " .. string.format("Scale tree and tuning spectrum of %s\n", mos_as_string)
.. "|-\n"
.. string.format("! rowspan=\"2\" colspan=\"%d\" | Generator<sup><abbr title=\"In steps of ed%s.\">(ed%s)</abbr></sup>\n", depth + 1, equave_suffix, equave_suffix)
.. string.format("! rowspan=\"2\" colspan=\"%d\" | Generator<sup><abbr title=\"In steps of ed%s.\">(ed%s)</abbr></sup>\n", depth + 1, equave_suffix, equave_suffix)
.. "! colspan=\"2\" | Cents\n"
.. "! colspan=\"2\" | Cents\n"
.. "! colspan=\"2\" | Step Ratio\n"
.. "! colspan=\"2\" | Step ratio\n"
.. "! rowspan=\"2\" | " .. comments_header_text .. "\n"
.. "! rowspan=\"2\" | " .. comments_header_text .. "\n"
.. "|-\n"
.. "|-\n"
Line 164: Line 166:
local hardness = ""
local hardness = ""
if step_ratio[2] == 0 then
if step_ratio[2] == 0 then
hardness = "→ ∞"
hardness = "&rarr;&nbsp;&#8734;"
else
else
hardness = string.format("%.3f", step_ratio[1] / step_ratio[2])
hardness = string.format("%.3f", step_ratio[1] / step_ratio[2])
Line 179: Line 181:
comment = custom_comment
comment = custom_comment
else
else
comment = default_comment .. "<br>" .. custom_comment
comment = default_comment .. "<br />" .. custom_comment
end
end
result = result .. string.format("| %s\n", comment)
result = result .. string.format("| style=\"text-align: left;\" | %s\n", comment)
end
end
Line 195: Line 197:
local comments = p.parse_kv_pairs(comments_unparsed) or {}
local comments = p.parse_kv_pairs(comments_unparsed) or {}
return p._scale_tree(mos, depth, comments)
local out_str = p._scale_tree(mos, depth, comments)
local debugg = yesno(frame.args["debug"])
return frame:preprocess(debugg == true and "<pre>" .. out_str .. "</pre>" or out_str)
end
end


return p
return p