|
local filename_chars = |
|
{ |
|
['"'] = "'", |
|
["\\"] = "_", |
|
["/"] = "_", |
|
[":"] = "-", |
|
["*"] = "+", |
|
["?"] = "_", |
|
["<"] = "(", |
|
[">"] = ")", |
|
["|"] = "-", |
|
} |
|
|
|
local escape_symbols = |
|
{ |
|
["%%"] = "%%%%", |
|
["%("] = "%%(", |
|
["%)"] = "%%)", |
|
["%]"] = "%%]", |
|
["%["] = "%%[", |
|
["%-"] = "%%-", |
|
["%+"] = "%%+", |
|
["%*"] = "%%*", |
|
["%?"] = "%%?", |
|
["%$"] = "%%$", |
|
["%."] = "%%.", |
|
["%^"] = "%%^", |
|
} |
|
|
|
local filter = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ()_+-'" |
|
|
|
local filename_strings = |
|
{ |
|
["A"] = { "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ā", "Ă", "Ą", "Ǟ", "ǟ", "Ǡ", "ǡ", "Ǣ", "ǣ", "ǻ", "Ǽ", "ǽ", "Ȁ", "ȁ", "Ȃ", "ȃ" }, |
|
["a"] = { "à", "á", "â", "ã", "ä", "å", "æ", "ā", "ă", "ą", }, |
|
["C"] = { "Ç" }, |
|
["c"] = { "ç", }, |
|
["D"] = { "Ď", "Đ", "Ð", }, |
|
["d"] = { "ď", "đ", "ð" }, |
|
["E"] = { "È", "É", "Ê", "Ë", "Ĕ", "Ė", "Ę", "Ě", }, |
|
["e"] = { "ė", "ę", "ĕ", "ě", "è", "é", "ê", "ë" }, |
|
["G"] = { "Ĝ", "Ġ", "Ğ", "Ģ", }, |
|
["g"] = { "ğ", "ĝ", "ġ", "ģ" }, |
|
["H"] = { "Ĥ", "Ħ", }, |
|
["h"] = { "ĥ", "ħ" }, |
|
["I"] = { "Ì", "Í", "Î", "Ï", "Į", "Ĭ", "Ī", "Ĩ", "IJ", "İ", }, |
|
["i"] = { "ı", "ij", "ĩ", "ī", "ĭ", "į", "ì", "í", "î", "ï", }, |
|
["J"] = { "ĵ", "ĵ", "ĵ" }, |
|
["K"] = { "Ķ", }, |
|
["k"] = { "ķ", "ĸ" }, |
|
["L"] = { "Ł", "Ŀ", "Ľ", "Ĺ", "Ļ", }, |
|
["l"] = { "ļ", "ĺ", "ľ", "ŀ", "ł" }, |
|
["N"] = { "Ņ", "Ń", "Ň", "Ŋ", "Ñ", }, |
|
["n"] = { "ñ", "ŋ", "ň", "ń", "ņ", "ʼn", }, |
|
["O"] = { "Ò", "Ó", "Ô", "Õ", "Õ", "Ö", "Ø", "Ō", "Ŏ", "Ŏ", "Ő", "Œ", }, |
|
["o"] = { "ò", "ó", "ô", "õ", "ö", "ø", "ō", "ő", "œ" }, |
|
["R"] = { "Ŕ", "Ŗ", "Ř", }, |
|
["r"] = { "ř", "ŗ", "ŕ", }, |
|
["S"] = { "Ś", "Ŝ", "Ş", "Š", }, |
|
["s"] = { "ß", "ś", "ŝ", "ŝ", "ş", "š" }, |
|
["T"] = { "Þ", "Ţ", "Ť", "Ŧ", }, |
|
["t"] = { "þ", "ţ", "ť", "ŧ", }, |
|
["U"] = { "Ũ", "Ū", "Ŭ", "Ů", "Ų", "Ű", "Ù", "Ú", "Û", "Ü", }, |
|
["u"] = { "ù", "ú", "û", "ü", "ű", "ų", "ů", "ŭ", "ū", "ũ", }, |
|
["W"] = { "Ŵ", }, |
|
["w"] = { "ŵ" }, |
|
["Y"] = { "Ý", "Ŷ", "Ÿ", }, |
|
["y"] = { "ý", "ÿ", "ŷ" }, |
|
["Z"] = { "Ź", "Ż", "Ž", }, |
|
["z"] = { "ż", "ź", "ž" }, |
|
["'"] = { "“", "”" }, |
|
} |
|
|
|
function CanonizeSaveGameName(name) |
|
if not name then return end |
|
|
|
name = name:gsub("(.)", filename_chars) |
|
for k,v in pairs(filename_strings) do |
|
if type(v) == "string" then |
|
name = name:gsub(v, k) |
|
elseif type(v) == "table" then |
|
for i=1,#v do |
|
name = name:gsub(v[i], k) |
|
end |
|
end |
|
end |
|
return name |
|
end |
|
|
|
function EscapePatternMatchingMagicSymbols(name) |
|
for k,v in sorted_pairs(escape_symbols) do |
|
name = name:gsub(k, v) |
|
end |
|
return name |
|
end |
|
|