Module:Interval table: Difference between revisions

CompactStar (talk | contribs)
No edit summary
CompactStar (talk | contribs)
No edit summary
Line 54: Line 54:
local function ud_note(et, fifth, step)
local function ud_note(et, fifth, step)
return table.concat(ud.get_note_names_table(et, fifth)[step], ", "):sub(0, -1)
return table.concat(ud.get_note_names_table(et, fifth)[step], ", "):sub(0, -1)
end
local function mysplit (inputstr, sep)
        if sep == nil then
                sep = "%s"
        end
        local t={}
        for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
                table.insert(t, str)
        end
        return t
end
end


function p.interval_table(frame)
function p.interval_table(frame)
local additional = frame.args['additional'] or ''
local additional_split = mysplit(additional, ';')
for i=1,#additional_split do
additional_split[i] = mysplit(additional_split[i], ',')
end
local tuning = frame.args['tuning']
local tuning = frame.args['tuning']
local et = ET.parse(tuning) or ET.parse('12edo')
local et = ET.parse(tuning) or ET.parse('12edo')
Line 100: Line 116:
wikitext = wikitext .. '!Approximate ratios\n'
wikitext = wikitext .. '!Approximate ratios\n'
if #additional_split > 0 then
for i=1,#additional_split[1] do
wikitext = wikitext .. '!' .. additional_split[1][i] .. '\n'
end
end


for i=0,et.size do
for i=0,et.size do
Line 125: Line 148:
else
else
wikitext = wikitext:sub(0, -3) .. '\n'
wikitext = wikitext:sub(0, -3) .. '\n'
end
if (i + 2) <= #additional_split then
for j=1,#additional_split[i+2] do
wikitext = wikitext .. '|' .. additional_split[i+2][j] .. '\n'
end
end
end
end
end