Module:Langue

De Lagny-sur-Marne Wiki
Version datée du 12 août 2013 à 03:06 par 0x010D (discussion | contributions) (relecture (« que celui-ci ait été au module par invoke, directement au modèle, ou à l'intérieur d'un module sous forme de string dans un tableau ou directement de string. » n'est pas très clair))
Aller à la navigation Aller à la recherche

local langue = { }

   local datalangue = mw.loadData( 'Module:langue/Data' )

-- premierParametre renvoie le premier paramètre de Frame, que celui-ci ait été au module par invoke, directement au modèle, -- ou à l'intérieur d'un module sous forme de string dans un tableau ou directement de string. -- si aucun de ces argument ne contient de chaîne, la fonction renvoie nil. -- si le deuxième paramètre est true, la chaine est renvoyée trimée et en minuscule. local function premierParametre ( frame, lowerCase )

   local arg
   if type ( frame ) == 'table' then
       arg = ( frame.getParent and ( frame.args [1] or frame:getParent().args [1] ) ) or frame [1]
   elseif type ( frame ) == 'string' then
       arg = frame
   end
   if type ( arg ) ~= 'string' then
       arg = nil
   end
   if arg and lowerCase then 
       arg = mw.ustring.lower ( mw.text.trim ( arg ) )
   end
   return arg

end

-- voir Modèle:Direction langue. function langue.directionLangue ( frame )

   local arg = premierParametre ( frame, true )
   local direction = 'ltr'
   for i, v in ipairs( datalangue.languesRtl ) do
       if arg == v then
           direction = 'rtl'
           break 
       end
   end
   return direction

end

-- voir Modèle:Code langue. function langue.codeLangue ( frame )

   local arg = premierParametre ( frame, true )
   local code = datalangue.dataCodeLangue [ arg ]
   return code or arg or 

end

-- voir Modèle:Code langue 2. function langue.codeLangue2 ( frame )

   local arg = premierParametre ( frame, true )
   local code = datalangue.dataCodeLangue [ arg ]
   return code or 

end

-- voir Modèle:Nom langue. function langue.nomLangue ( frame )

   local arg = premierParametre ( frame, true )
   local nom = datalangue.dataNomLangue [ arg ] or '?????'
   return '' .. nom .. ''

end

-- voir Modèle:Lang. function langue.lang ( frame )

   local args = ( frame.getParent and frame:getParent().args ) or frame or { }         -- préparation pour appel par modèle ou direct.
   local code = mw.ustring.lower ( mw.text.trim( args [1] or  ) )
   local texte = args.texte or 
   local dir = mw.ustring.lower ( args.dir or  )
   local trans = args.trans
   local wikiText = 
   
   if texte ==  then
       texte = args [2] or 
   end
   -- détection de la direction du texte.
   if code == 'ltr' or code == 'rtl' then
       dir = code
       code = mw.ustring.lower ( mw.text.trim ( args [2] ) )
       texte = args [3] or 
   end
   -- prépatation du rendu de direction du texte.
   if dir == 'ltr' or dir == 'rtl' then 
       dir = 'dir=' .. dir
   else
       dir = 
   end
   -- transliteration.
   if trans and trans ~=  then
       trans = ' (' .. trans
           .. ')'
   else
       trans = 
   end
   -- compilation du texte à retourner.
   if code ==  then
       wikiText = texte
   else
       wikiText = '' .. texte
           .. '' .. trans
   end
   -- ajout de la catégorie Page avec code de langue invalide si le code langue est dans la table dataCodeInvalide.
   for i, v in ipairs( datalangue.dataCodeInvalide ) do
       if code == v then
           local namespaceCategorisation = { [0] = true, [4] = true, [10] = true, [14] = true, [100] = true }
           if namespaceCategorisation [ mw.site.namespaces.id ] then
               wikiText = wikiText .. 
               break 
           end
       end
   end   
   return wikiText

end

function langue.langue ( frame )

   local args = ( frame.getParent and frame:getParent().args ) or frame or { }
   args [1] = langue.codeLangue ( args [1] )
   if not ( args.dir == 'ltr' or args.dir == 'rtl' ) then
       args.dir = langue.directionLangue ( args [1] )
   end
   return langue.lang ( args )

end

-- voir Modèle:Indication de langue. function langue.indicationDeLangue ( frame )

   local args = ( frame.getParent and frame:getParent().args ) or frame or { }
   local nomLangue = args [1] or 
   local code = mw.ustring.lower ( args.langue or mw.text.trim( args [2] or  ) )
   local texte = args.texte
   local dir = args.dir
   local wikiText = 
   if nomLangue ==  then
       nomLangue = datalangue.dataNomLangue [ code ] or 
   end
   if texte and texte ~=  then
       texte = ' ' .. langue.lang { code, dir = dir, texte = texte }
   else
       texte = 
   end
   wikiText = '('
       .. code .. ')'
       .. texte
   return wikiText

end

-- voir Modèle:Langue avec nom. function langue.langueAvecNom ( frame )

   local args = ( frame.getParent and frame:getParent().args ) or frame or { }
   local code = mw.ustring.lower ( mw.text.trim ( args [1] or ) )
   local texte = args.texte or args [2] or 
   local dir = args.dir
   local trans = args.trans
   local wikiText = 
   -- détection de la direction du texte.
   if code == 'ltr' or code == 'rtl' then
       dir = code
       code = mw.ustring.lower ( mw.text.trim ( args [2] ) )
       texte = args [3] or 
   end
   
   -- définition du nom de la langue en français.
   local nom = langue.nomLangue { code }
   if texte ~=  then
       texte = ' ' .. langue.lang { code, dir = dir, texte = texte, trans = trans }
   end
   wikiText = nom .. ' :' .. texte
   return wikiText

end

return langue