Module:fr-flexion2

Bonjour, vous êtes venu ici pour chercher la signification du mot Module:fr-flexion2. Dans DICTIOUS, vous trouverez non seulement toutes les significations du dictionnaire pour le mot Module:fr-flexion2, mais vous apprendrez également son étymologie, ses caractéristiques et comment dire Module:fr-flexion2 au singulier et au pluriel. Tout ce que vous devez savoir sur le mot Module:fr-flexion2 est ici. La définition du mot Module:fr-flexion2 vous aidera à être plus précis et correct lorsque vous parlerez ou écrirez vos textes. Connaître la définition deModule:fr-flexion2, ainsi que celles d'autres mots, enrichit votre vocabulaire et vous fournit des ressources linguistiques plus nombreuses et de meilleure qualité.

La documentation pour ce module peut être créée à Module:fr-flexion2/Documentation

--==============================================================================
--
-- Module:fr-flexion2
--
--     Génération des boites de flexions pour la langue française,
--     utilisé par le Modèle:fr-flexion
--
-- écrit par:  Maëlan (inspiré du Module:fr-flexion écrit par GaAs fin 2014)
-- date:       2024-02
-- licence:    CC-BY-SA 3.0
--
--==============================================================================

-- les bibliothèques dont on dépend:
Params = require('Module:paramètres')
Pron = require('Module:prononciation')

-- notre module:
local M = {}

-- les «types» de flexions pris en charge par le modèle:
local types = {
  -- = { "", "s", "e", "es", "", "", "", "" },
   = { ms="", mp="s", fs="e", fp="es",
               pron_ms="", pron_mp="", pron_fs="", pron_fp="" },
  -- = { "in", "ins", "ine", "ines", "ɛ̃", "ɛ̃", "in", "in" },
   = { ms="in", mp="ins", fs="ine", fp="ines",
                 pron_ms="ɛ̃", pron_mp="ɛ̃", pron_fs="in", pron_fp="in" },
  -- = { "ain", "ains", "aine", "aines", "ɛ̃", "ɛ̃", "ɛn", "ɛn" },
   = { ms="ain", mp="ains", fs="aine", fp="aines",
                  pron_ms="ɛ̃", pron_mp="ɛ̃", pron_fs="ɛn", pron_fp="ɛn" },
  -- = { "er", "ers", "ère", "ères", "e", "e", "ɛʁ", "ɛʁ" },
   = { ms="er", mp="ers", fs="ère", fp="ères",
                 pron_ms="e", pron_mp="e", pron_fs="ɛʁ", pron_fp="ɛʁ" },
  -- TODO
}

local liste_noms_types = {}
for nom, _ in pairs(types) do
  table.insert(liste_noms_types, nom)
end

-- teste si une chaîne se termine par une autre chaîne
-- (cf https://stackoverflow.com/a/72921992 ):
function string:endswith(suffix)
  return self:sub(-#suffix) == suffix
end

-- génère un message d’erreur en Wikicode:
function erreur(msg)
  -- TODO:
  local txt = '<strong class="error">Usage erroné de {{modèle|fr-flexion}} : '
  txt = txt .. msg
  txt = txt .. '</strong>'
  txt = txt .. "]"
  return txt
end

-- fonction d’entrée, invoquée par ]:
function M.boite_flexions(frame)
  local args = Params.process(frame:getParent().args, {
     = { enum = liste_noms_types },
     = { alias_of = "type" },
     = {},
     = {},
     = {},
     = {},
     = {},
     = {},
     = {},
     = {},
     = {},
     = {},
     = {},
     = {},
     = { enum = {"non", "muet", "aspiré"}, default="non" },
     = { default = mw.title.getCurrentTitle().text },
  })
  -- pré-remplit les paramètres en fonction du type de flexion:
  if args ~= nil then
    local t = types]
    args = t.ms
    args = t.mp
    args = t.fs
    args = t.fp
    args = t.pron_ms
    args = t.pron_mp
    args = t.pron_fs
    args = t.pron_fp
  end
  -- extrait la prononciation du radical:
  local pron_radic = nil
  if args ~= nil then
    if not args:endswith(args) then
      return erreur("pron.ms ne se termine pas comme attendu")
    end
    pron_radic = args:sub(1, -#args-1)
  end
  if args ~= nil then
    if not args:endswith(args) then
      return erreur("pron.mp ne se termine pas comme attendu")
    end
    if pron_radic == nil then
      pron_radic = args:sub(1, -#args-1)
    elseif args ~= pron_radic .. args then
      return erreur("plusieurs prononciations contradictoires")
    end
  end
  if args ~= nil then
    if not args:endswith(args) then
      return erreur("pron.fs ne se termine pas comme attendu")
    end
    if pron_radic == nil then
      pron_radic = args:sub(1, -#args-1)
    elseif args ~= pron_radic .. args then
      return erreur("plusieurs prononciations contradictoires")
    end
  end
  if args ~= nil then
    if not args:endswith(args) then
      return erreur("pron.fp ne se termine pas comme attendu")
    end
    if pron_radic == nil then
      pron_radic = args:sub(1, -#args-1)
    elseif args ~= pron_radic .. args then
      return erreur("plusieurs prononciations contradictoires")
    end
  end
  -- TODO:
  return ""
end

-- publication de notre module:
return M