« Convertisseurs » : différence entre les versions
De Sèida
Autres actions
Aucun résumé des modifications |
|||
| Ligne 2 : | Ligne 2 : | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
-- Tableau de correspondance Latin -> Èlyan | |||
-- Tableau de correspondance Latin -> Èlyan | -- Tableau de correspondance Latin -> Èlyan | ||
local latinToElyan = { | local latinToElyan = { | ||
["p"]=" | ["p"]="Ϥ", | ||
["f"]=" | ["b"]="Ϥ°", | ||
["m"]=" | ["t"]="ϟ", | ||
["i"]=" | ["d"]="ϟ°", | ||
["o"]=" | ["k"]="Ϩ", | ||
["y"]=" | ["g"]="Ϩ°", | ||
["f"]="Ꜫ", | |||
["v"]="ϣ", | |||
["s"]="Ϭ", | |||
["z"]="Ϭ°", | |||
["sh"]="ʒ", | |||
["j"]="ʒ°", | |||
["m"]="Ϡ", | |||
["n"]="Ϡ°", | |||
["l"]="ϻ", | |||
["r"]="ϻ°", | |||
["c"]="∿", | |||
["ch"]="っ", | |||
["i"]="ㄹ", | |||
["e"]="═", | |||
["è"]="+", | |||
["a"]="ㅆ", | |||
["u"]="ㄷ", | |||
["ù"]="へ", | |||
["o"]="○", | |||
["ò"]="ㅁ", | |||
["y"]="乙", | |||
["w"]="㇊", | |||
["h"]="亅", | |||
-- Ponctuation | -- Ponctuation | ||
| Ligne 23 : | Ligne 49 : | ||
-- Tableau de correspondance Èlyan -> Latin | -- Tableau de correspondance Èlyan -> Latin | ||
-- Attention : on met d'abord les symboles les plus longs pour gérer digrammes | |||
local elyanToLatin = {} | local elyanToLatin = {} | ||
local sortedKeys = {} | |||
for k,v in pairs(latinToElyan) do | for k,v in pairs(latinToElyan) do | ||
elyanToLatin[v] = k | elyanToLatin[v] = k | ||
table.insert(sortedKeys, v) | |||
end | end | ||
-- Trier par longueur décroissante pour gérer les symboles sur plusieurs caractères | |||
table.sort(sortedKeys, function(a,b) return #a > #b end) | |||
-- Fonction pour convertir du latin vers Elyan | -- Fonction pour convertir du latin vers Elyan | ||
| Ligne 53 : | Ligne 86 : | ||
local function toLatin(text) | local function toLatin(text) | ||
local result = "" | local result = "" | ||
for | local i = 1 | ||
while i <= #text do | |||
local matched = false | |||
for _, key in ipairs(sortedKeys) do | |||
result = result .. | if text:sub(i,i+#key-1) == key then | ||
result = result .. elyanToLatin[key] | |||
i = i + #key | |||
matched = true | |||
break | |||
end | |||
end | |||
if not matched then | |||
result = result .. text:sub(i,i) | |||
i = i + 1 | |||
end | end | ||
end | end | ||
| Ligne 63 : | Ligne 105 : | ||
end | end | ||
-- | -- Exemples d'utilisation | ||
local sampleLatin = "Mèn Che ThaLaEk" | local sampleLatin = "Mèn Che ThaLaEk" | ||
local sampleElyan = toElyan(sampleLatin) | local sampleElyan = toElyan(sampleLatin) | ||
print("Latin -> Èlyan : " .. sampleElyan) | print("Latin -> Èlyan : " .. sampleElyan) | ||
local | local sampleElyan2 = "Ϡ+Ϡ° っ═ ϟ亅ㅆϻㅆ═Ϩ" | ||
local backToLatin = toLatin( | local backToLatin = toLatin(sampleElyan2) | ||
print("Èlyan -> Latin : " .. backToLatin) | print("Èlyan -> Latin : " .. backToLatin) | ||
</syntaxhighlight > | </syntaxhighlight > | ||
Version du 12 septembre 2025 à 17:18
Convertisseur Èlyan (en lettre latines) vers Èlyan
-- Tableau de correspondance Latin -> Èlyan
-- Tableau de correspondance Latin -> Èlyan
local latinToElyan = {
["p"]="Ϥ",
["b"]="Ϥ°",
["t"]="ϟ",
["d"]="ϟ°",
["k"]="Ϩ",
["g"]="Ϩ°",
["f"]="Ꜫ",
["v"]="ϣ",
["s"]="Ϭ",
["z"]="Ϭ°",
["sh"]="ʒ",
["j"]="ʒ°",
["m"]="Ϡ",
["n"]="Ϡ°",
["l"]="ϻ",
["r"]="ϻ°",
["c"]="∿",
["ch"]="っ",
["i"]="ㄹ",
["e"]="═",
["è"]="+",
["a"]="ㅆ",
["u"]="ㄷ",
["ù"]="へ",
["o"]="○",
["ò"]="ㅁ",
["y"]="乙",
["w"]="㇊",
["h"]="亅",
-- Ponctuation
["."]="。",
["..."]="…",
["!"]="!",
["?"]="?",
[","]=",",
[":"]=":",
[";"]=";",
["'"]="’"
}
-- Tableau de correspondance Èlyan -> Latin
-- Attention : on met d'abord les symboles les plus longs pour gérer digrammes
local elyanToLatin = {}
local sortedKeys = {}
for k,v in pairs(latinToElyan) do
elyanToLatin[v] = k
table.insert(sortedKeys, v)
end
-- Trier par longueur décroissante pour gérer les symboles sur plusieurs caractères
table.sort(sortedKeys, function(a,b) return #a > #b end)
-- Fonction pour convertir du latin vers Elyan
local function toElyan(text)
text = text:lower()
local result = ""
local i = 1
while i <= #text do
local two = text:sub(i,i+1)
local one = text:sub(i,i)
if latinToElyan[two] then
result = result .. latinToElyan[two]
i = i + 2
elseif latinToElyan[one] then
result = result .. latinToElyan[one]
i = i + 1
else
result = result .. one
i = i + 1
end
end
return result
end
-- Fonction pour convertir de Elyan vers latin
local function toLatin(text)
local result = ""
local i = 1
while i <= #text do
local matched = false
for _, key in ipairs(sortedKeys) do
if text:sub(i,i+#key-1) == key then
result = result .. elyanToLatin[key]
i = i + #key
matched = true
break
end
end
if not matched then
result = result .. text:sub(i,i)
i = i + 1
end
end
return result
end
-- Exemples d'utilisation
local sampleLatin = "Mèn Che ThaLaEk"
local sampleElyan = toElyan(sampleLatin)
print("Latin -> Èlyan : " .. sampleElyan)
local sampleElyan2 = "Ϡ+Ϡ° っ═ ϟ亅ㅆϻㅆ═Ϩ"
local backToLatin = toLatin(sampleElyan2)
print("Èlyan -> Latin : " .. backToLatin)