Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

« Convertisseurs » : différence entre les versions

De Sèida
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
= Convertisseur Èlyan (en lettre latines) vers Èlyan =
= Convertisseur Èlyan (en lettre latines) vers Èlyan =
Il est possible d'utiliser facilement les convertisseurs suivants sur des sites de compilateur lua en ligne comme https://onecompiler.com/lua/


<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 = {

Version du 12 septembre 2025 à 17:19

Convertisseur Èlyan (en lettre latines) vers Èlyan

Il est possible d'utiliser facilement les convertisseurs suivants sur des sites de compilateur lua en ligne comme https://onecompiler.com/lua/

-- 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)