Module:Mainmodule

From Wikipedia

Documentation for this module may be created at Module:Mainmodule/doc

-- this is a test. Will be removed after.

local z = {}

local mw = require "Module:mw"

-- import an other module
local sub = require "Module:Mainmodulesub"
-- import an other module in a subpage
local ssub = require "Module:Mainmodule/sub"

-- fonction qui prend deux paramètres : la première et la deuxième partie du titre
-- on ajoute aussi les paramètres italique, gras et seul.
-- fin peut valoir nil s'il n'y en a pas
function z.genere(debut, fin, italique, gras, seul)
  local deb = "..DISPLAYTITLE:"
  local result = "{{DISPLAYTITLE:"
  -- si italique on ajoute
  if (italique ~= nil) then
    deb = deb .. ".i."  -- ajout de l'italique
    result = result .. "<i>"  -- ajout de l'italique
  end
  if (gras ~= nil) then
    deb = deb .. ".b."  -- ajout du gras
    result = result .. "<b>"  -- ajout du gras
  end
  -- ajout du titre
  deb = deb .. debut
  result = result .. debut
  -- symétriquement on ferme les éléments
  if (gras ~= nil) then
    deb = deb .. "./b."  -- fermeture du gras
    result = result .. "</b>"  -- fermeture du gras
  end
  if (italique ~= nil) then
    deb = deb .. "./i."  -- fermeture de l'italique
    result = result .. "</i>"  -- fermeture de l'italique
  end
  
  deb = deb .. "alors: "
  if (seul == nil) then
      deb = deb .. "seul=nil "
  else
      deb = deb .. "seul=" .. seul .. " "
  end
  if (fin == nil) then
      deb = deb .. "fin=nil "
  else
      deb = deb .. "fin=" .. fin .. " "
  end
  
  -- si on a un 'fin' on l'ajoute
  if (nil == seul) then
    deb = deb .. "seul pas nil "
    if (nil ~= fin) then
      deb = deb .. "fin pas nil et vaut " .. fin
      result = result .. " " .. fin
    end
  end

  -- on ferme le DISPLAYTITLE
  deb = deb .. ".."
  result = result .. "}}"
  return deb .. " " .. result
end


-- fonction principale (et unique). Paramètre à l'appel : aucun
function z.titre_mis_en_italique2(frame)

  -- récupération des paramètres -> seulement ceux venant du modèle
  local args = frame.args

  -- les paramètres qui nous intéresse
  local italique = args.italique
  local gras = args.gras
  local seul = args.seul
  local deb = "debug: "
  
  -- si aucun paramètre, on n'a rien à faire
  if (nil == italique and nil == gras and nil == seul) then
    return ""  -- rien
  end

  -- on récupère le titre de l'article
  local titre = frame:preprocess("{{PAGENAME}}")

  -- on cherche la présence d'une "(" dans le titre
   -- retourne la position dans le texte du premier "(" trouvé
  local pos = string.find (titre, "(", 1, true)

  -- si pos différent de nil on recupère les deux parties
  local p1
  local p2
  if (pos ~= nil) then
    -- on récupère la partie homonymie (à partir de 'pos', donc)
    p2 = string.sub (titre, pos, -1)
    -- on récupère le début (de 1 jusqu'à pos-1)
    p1 = string.sub (titre, 1, pos-1)
    -- il ne faut pas mettre les italiques sur l'espace terminal (avant la "(")
    -- donc on enlève tout ce qui est "séparateur" de la fin de la chaîne
    p1 = string.gsub (p1, "[%s]*$", "")
    deb = deb .. "p1=" .. p1 .. ", p2=" .. p2 .. " "
  else
    -- sinon p1=titre, et p2=nil (rien)
    p1 = titre
    p2 = nil
    deb = deb .. "p1=" .. p1 .. ", p2=NIL "
  end
  -- on retourne le résultat
  return deb .. " " .. frame:preprocess( z.genere (p1, p2, italique, gras, seul))
end



function z.titre_mis_en_italique(frame)

  -- récupération des paramètres -> on n'a pas de paramètre
  
  -- on récupère le titre de l'article
  local titre = frame:preprocess("{{PAGENAME}}")

  -- on cherche la présence d'une "(" dans le titre
   -- retourne la position dans le texte du premier "(" trouvé
  local pos = string.find (titre, "(", 1, true)
  -- si 'nil' il n'y a pas de ( -> tout le titre en italique
  if (nil == pos) then
    return frame:preprocess("{{DISPLAYTITLE:<i>" .. titre .. "</i>}}")
  end

  -- on récupère la partie homonymie (à partir de 'pos', donc)
  local p2 = string.sub (titre, pos, -1)
  -- on récupère le début (de 1 jusqu'à pos-1)
  local p1 = string.sub (titre, 1, pos-1)
  -- il ne faut pas mettre les italiques sur l'espace terminal (avant la "(")
  -- donc on enlève tout ce qui est "séparateur" de la fin de la chaîne
  p1 = string.gsub (p1, "[%s]*$", "")

  -- on retourne la première partie en italique, la deuxième normal, dans DISPLAYTITLE
  return frame:preprocess("{{DISPLAYTITLE:<i>" .. p1 .. "</i> " .. p2 .. "}}")
end

function z.generate(frame)
    local result = ""

    result = "Output from test module 3:<br/>"
    result = result .. "This is from Mainmodule:generate()<br/>"

    -- use the module
    result = result .. sub.fromsub1()
    
    result = result .. sub.fromsub2()
    
    -- use the module from subpage
    result = result .. ssub.fromsub1()
    
    result = result .. ssub.fromsub2()

    return result
end

return z