Module:scripts/print

local export = {}

local function generate_table(name_to_code)

local result = {}

local script_data = mw.loadData("Module:scripts/data")

local iterate

if name_to_code then

for code, data in pairs(script_data) do

if not result[data[1]] or #code == 4 then

-- Sometimes, multiple scripts have the same name, e.g. 'Arab',

-- 'fa-Arab', 'ur-Arab' and several others are called "Arabic".

-- Prefer the one with four characters when disambiguating.

result[data[1]] = code

end

end

else

for code, data in pairs(script_data) do

result[code] = data[1]

end

end

return result

end

local function dump(data, name_to_code)

local output = { "return {" }

local i = 1

local sorted_pairs = require "Module:table".sortedPairs

for k, v in sorted_pairs(data) do

i = i + 1

output[i] = ('\t[%q] = %q,'):format(k, v)

end

table.insert(output, "}")

return table.concat(output, "\n")

end

function export.code_to_name(frame)

return require "Module:debug".highlight(dump(generate_table(false), false))

end

function export.name_to_code(frame)

return require "Module:debug".highlight(dump(generate_table(true), true))

end

return export