Module:Uniform map: Difference between revisions

Sintel (talk | contribs)
merge changes from dev
ArrowHead294 (talk | contribs)
mNo edit summary
 
(12 intermediate revisions by 2 users not shown)
Line 1: Line 1:
local p = {}
local getArgs = require("Module:Arguments").getArgs
local getArgs = require("Module:Arguments").getArgs
local utils = require("Module:Utils")
local utils = require("Module:Utils")
local p = {}
local yesno = require("Module:Yesno")


-- stylua: ignore
-- stylua: ignore
local warts = {
local warts = {
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
"a", "b", "c", "d", "e", "f", "g", "h", "i",
     'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
     "j", "k", "l", "m", "n", "o", "p", "q", "r",
     's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
     "s", "t", "u", "v", "w", "x", "y", "z"
}
}


Line 86: Line 88:
-- Generate table of p-limit uniform maps between min and max, for use with print_table
-- Generate table of p-limit uniform maps between min and max, for use with print_table
-- Could potentially be used standalone for raw data with headers
-- Could potentially be used standalone for raw data with headers
function p.make_table(prime, min, max)
function p.make_table(prime, prec, min, max)
local maptable = {} -- Table of uniform maps with boundaries and wart notation
local maptable = {} -- Table of uniform maps with boundaries and wart notation
local map_table = p.new()
local map_table = p.new()
Line 98: Line 100:
table.insert(maptable, row)
table.insert(maptable, row)
while lb < max do
while lb < max do
row = { string.format("%.4f", lb), string.format("%.4f", ub), p.wart(map_table.map) }
row = { string.format(string.format("%%.%df", tonumber(prec)), lb), string.format(string.format("%%.%df", tonumber(prec)), ub), p.wart(map_table.map) }
for j = 1, #map_table.map do
for j = 1, #map_table.map do
table.insert(row, map_table.map[j])
table.insert(row, map_table.map[j])
Line 113: Line 115:
function p.print_table(frame)
function p.print_table(frame)
local args = getArgs(frame)
local args = getArgs(frame)
local prime = args[1]
local prime = args["limit"]
local min = args[2]
local min = args["min"]
local max = args[3]
local max = args["max"]
if utils.index_of(utils.primes, utils.eval_num_arg(prime, 5)) == nil then
local edo = args["edo"]
prime = 5 -- Default to 5-limit
local prec = args["prec"]
local debugg = yesno(args["debug"])
 
-- Default to 13-limit
prime = utils.eval_num_arg(prime, 13)
if utils.index_of(utils.primes, prime) == nil then
prime = 13
end
assert(prime, "Prime limit undefined.")
 
min = utils.eval_num_arg(min, nil)
max = utils.eval_num_arg(max, nil)
 
if max == nil or min == nil then
assert(edo, "Must provide edo if not min or max given.")
-- default to +/- 0.2
min = edo - 0.2
max = edo + 0.2
end
end
local luatable = p.make_table(prime, utils.eval_num_arg(min, 11.5), utils.eval_num_arg(max, 12.5))
 
local wikitable =
local luatable = p.make_table(prime, prec, min, max)
string.format('{| class="wikitable"\n|+ %d-limit [[uniform map]]s between %g and %g', prime, min, max)
local result = '{| class="wikitable"\n'
.. '|+ style="font-size: 105%; | '
.. string.format("%d-limit [[uniform map]]s between %g and %g\n", prime, min, max)
.. "|-\n"
for i = 1, 3 do
for i = 1, 3 do
wikitable = wikitable .. "\n! " .. luatable[1][i]
result = result .. "! " .. luatable[1][i] .. "\n"
end
end
wikitable = wikitable .. "\n! Map"
result = result .. "! Map\n"
for i = 2, #luatable do
for i = 2, #luatable do
wikitable = wikitable .. "\n|-"
result = result .. "|-\n"
for j = 1, 3 do
for j = 1, 3 do
wikitable = wikitable .. "\n| " .. luatable[i][j]
result = result .. "| " .. luatable[i][j] .. "\n"
end
end
local wikimap = ""
local wikimap = ""
Line 135: Line 157:
wikimap = wikimap .. " " .. luatable[i][j]
wikimap = wikimap .. " " .. luatable[i][j]
end
end
wikitable = wikitable .. "\n| " .. frame:expandTemplate({ title = "map", args = { wikimap } })
result = result .. string.format("| {{map|%s}}\n", wikimap)
end
result = result .. "|}"
 
-- Debugger option
if debugg == true then
result = "<syntaxhighlight lang=\"wikitext\">" .. result .. "</syntaxhighlight>"
end
end
wikitable = wikitable .. "\n|}"
return wikitable
return frame:preprocess(result)
end
end


return p
return p