72 lines
2.2 KiB
Lua
72 lines
2.2 KiB
Lua
-- Generate a script map based on ISO 15924 data
|
|
--
|
|
-- Data source: Unicode
|
|
-- URL: https://www.unicode.org/iso15924/iso15924.txt
|
|
-- License: UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
|
|
|
|
codeFileName = "unicode/iso15924.txt"
|
|
|
|
function split(str, character)
|
|
result = {}
|
|
|
|
index = 1
|
|
for s in string.gmatch(str .. character, "(.-)"..character) do
|
|
result[index] = s
|
|
index = index + 1
|
|
end
|
|
|
|
return result
|
|
end
|
|
|
|
fo2 = io.open('temp/uni_loadscriptmap.sql','w')
|
|
fo2:write('-- Mapping of script codes based on ISO 15924\n-- Date: ' .. os.date("%Y-%m-%d %H:%M") .. '\n\n')
|
|
fo2:write('-- Data source: Unicode Org (https://www.unicode.org)\n')
|
|
fo2:write('-- URL: https://www.unicode.org/iso15924/iso15924.txt\n')
|
|
fo2:write('-- License: UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE\n\n')
|
|
|
|
fo2:write("create table if not exists uni_scriptmap (sctag char, scname char, scalias char, primary key (sctag));\n")
|
|
fo2:write('delete from uni_scriptmap;\nbegin;\n')
|
|
|
|
-- Names and order of data columns
|
|
-- Code|N°|English Name|Nom français|Alias|Age|Date
|
|
|
|
noalias = 0
|
|
count = 0
|
|
for line in io.lines(codeFileName) do
|
|
rem = string.sub(line,1,1)
|
|
if rem ~= "#" and rem ~= "" then
|
|
values = split(line, ";")
|
|
sctag = values[1]
|
|
scnum = values[2]
|
|
scname = values[3]
|
|
scname_fr = values[4]
|
|
scalias = values[5]
|
|
scage = values[6]
|
|
scdate = values[7]
|
|
|
|
scname = scname:gsub("'", "''")
|
|
if scalias == "" then
|
|
if sctag == "Hans" or sctag == "Hant" then
|
|
scalias = sctag
|
|
else
|
|
noalias = noalias + 1
|
|
scalias = "-"
|
|
end
|
|
end
|
|
|
|
fo2:write("insert into uni_scriptmap values ('" .. sctag .. "', '" .. scname .. "', '" .. scalias .. "');\n")
|
|
count = count + 1
|
|
end
|
|
end
|
|
print(" Number of script mappings = " .. count)
|
|
print(" Number of missing script aliases = " .. noalias)
|
|
if noalias > 0 then
|
|
print(" Script aliases are used in POSIX locale identifiers where they are")
|
|
print(" used as modifiers to represent the script of a language.")
|
|
print(" Missing script aliases impose a problem only for script identifiers")
|
|
print(" actually used in locale tags supported by wxWidgets.")
|
|
end
|
|
|
|
fo2:write('commit;\n')
|
|
fo2:close()
|