Modul:ziman/print
Xuyakirin
- Ev belge ji Modul:ziman/print/belge hatiye girtin.
Ji bo rojanekirina Modul:ziman/ji kod li nav vê kodê veşartî bi kar bîne:
Ji bo rojanekirina Modul:ziman/navên zimanan vê kodê veşartî bi kar bîne:
local export = {}
local concat = table.concat
local highlight = require("Module:debug").highlight
local insert = table.insert
local sort = table.sort
local sorted_pairs = require("Module:table").sortedPairs
local toJSON = require("Module:JSON").toJSON
local yesno = require("Module:yesno")
local function for_code_and_data(func, module_type)
function iterate(module)
for code, data in pairs(require(module)) do
func(code, data)
end
end
if module_type == "language" then
iterate("Module:languages/data/2")
local char = string.char
for b = ("a"):byte(), ("z"):byte() do
iterate("Module:languages/data/3/" .. char(b))
end
iterate("Module:languages/data/exceptional")
elseif module_type == "etymology" then
iterate("Module:etymology languages/data")
elseif module_type == "family" then
iterate("Module:families/data")
end
end
local function generate_table(name_to_code, module_type)
local result = {}
if name_to_code then
for_code_and_data(function(code, data) result[data[1]] = code end, module_type)
else
for_code_and_data(function(code, data) result[code] = data[1] end, module_type)
end
return result
end
local function dump(data)
local output, i = {"return {"}, 1
for k, v in sorted_pairs(data) do
i = i + 1
output[i] = ('\t[%q] = %q,'):format(k, v)
end
insert(output, "}")
return concat(output, "\n")
end
local function print_data(name_to_code, args)
local t = generate_table(name_to_code, args[2])
if args[1] == "plain" then
return dump(t)
elseif args[1] == "json" then
return toJSON(t, {compress = true, sort_keys = true})
end
return highlight(dump(t))
end
function export.code_to_name(frame)
return print_data(false, frame.args)
end
function export.name_to_code(frame)
return print_data(true, frame.args)
end
function export.appendix_constructed_canonical_names()
local names = {}
for_code_and_data(function(code, data)
if data.type == "appendix-constructed" then
insert(names, data[1])
end
end)
sort(names)
return toJSON(names, {compress = true})
end
return export