Module:number list/show/sandbox

local export = {}

local m_number_list = require("Module:number list/sandbox")

local function compare_numbers(a, b)	if type(a) ~= "number" then a = tonumber(a) end if type(b) ~= "number" then b = tonumber(b) end return a < b end

function export.print_table(language_code) local module = require("Module:number list/data/" .. language_code) local lang = require("Module:languages").getByCode(language_code) local full_link = require("Module:links").full_link local tag_text = require("Module:script utilities").tag_text local function link(form) return full_link({ lang = lang, term = form}) end local function tag(form) return tag_text(form, lang) end local form_types = m_number_list.get_number_types(language_code) local numeral_index = 1 table.insert(form_types, numeral_index,		{key = "numeral", display = "Numeral"}) local number_type_indices = {} for number, data in pairs(module.numbers) do		for i, form_type in pairs(form_types) do			if data[form_type.key] then number_type_indices[i] = true end end end local numeral_config = module.numeral_config if numeral_config then number_type_indices[numeral_index] = true end number_type_indices = require("Module:table").keysToList(number_type_indices) local Array = require("Module:array") local output = Array for number, data in require("Module:table").sortedPairs(module.numbers, compare_numbers) do		local number_string if type(number) == "number" then number_string = ("%.0f"):format(number) else number_string = number end output:insert(("|-\n| %s"):format(number)) local numeral if numeral_config then numeral = m_number_list.generate_decimal_numeral(numeral_config, number) elseif data.numeral then numeral = data.numeral end if numeral then numeral = tag(numeral) output:insert(("| %s"):format(numeral or "")) end for _, i in ipairs(number_type_indices) do			if i ~= numeral_index then local form = data[form_types[i].key] if type(form) == "table" then form = Array(form):map(link):concat(", ") elseif form then form = link(form) end output:insert(("| %s"):format(form or "")) end end end -- Add headers. for i, index in ipairs(number_type_indices) do output:insert(i, ("! %s"):format(m_number_list.display_number_type(form_types[index]))) end output:insert(1, ("! Number")) output:insert(1, '{| class="wikitable"') output:insert('|}') return output:concat("\n") end

function export.table(frame) local language_code if frame then language_code = frame.args[1] end if not language_code then language_code = mw.title.getCurrentTitle.fullText:match("Module:number list/data/([a-z-]+)") if not language_code then error("No language code in title or in parameter 1.") end if language_code == "und" then return end end return export.print_table(language_code) end

return export