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 MOS = require("Module:MOS") | local MOS = require("Module:MOS") | ||
local ET = require("Module:ET") | local ET = require("Module:ET") | ||
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 = | local result = "{| class=\"wikitable center-all\"\n" | ||
.. | .. "|+ 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 | .. "! 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 = "→ ∞" | ||
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 {} | ||
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 | ||