Module:JuxtaInter

La bibliothèque libre.

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

local p = {}

-- trim1(s): deletes whitespace at the beginning and end of s
function trim1(s)
   return (s:gsub("^%s*(.-)%s*$", "%1"))
end
-- affichepages: module utilisé pour l'affichage de livres avec traductions
--   juxtalinéaires. Affiche, côte à côte, la transclusion de pages.
--   provenant de 2 wikisources différentes.
--   On affiche deux colonnes. À gauche la transclusion de la page d'une langue,
--   à droite celle de la page correspondante d'une autre langue. 
--   Deux pages correspondantes sont alignées.

-- Argument: tab.
--    tab[1]: code de la première langue
--    tab[2]: code de la deuxième langue
--    tab[3]: nom de la page d'index. Doit être le même pour les deux langues
--    tab[4]: numéro de la première page à afficher dans la première langue
--    tab[5] : numéro de la dernière page à afficher dans la première langue
--    tab[6]: numéro de la première page à afficher dans la deuxième langue
--    tab[7]: largeur (en %) de la colonne ou la première langue est affichée.
--    tab[8]: largeur (en %) de la colonne ou la deuxième langue est affichée.
--    tab[9]:  espace vertical entre deux pages (une par langue) et les deux pages suivantes
--    tab[10]: espace horizontal entre la page de droite et la page de gauche

function p.affichepages(tab)
  local lang1=trim1(tab.args[1])
  local lang2=trim1(tab.args[2])
  local index=trim1(tab.args[3])
  local ideb1=tonumber(tab.args[4])
  local ifin1=tonumber(tab.args[5])
  local ideb2=tonumber(tab.args[6])
  local larg1=tonumber(tab.args[7])
  local larg2=tonumber(tab.args[8])
  local vspace=tonumber(tab.args[9])
  local hspace=tonumber(tab.args[10])
  
  retval=''

  retval=retval..'<table style="border-spacing:30px 10px; table-layout:fixed;">\n'
  local di=1
  if ideb1<ideb2 then
  	di=1
  else
  	di=-1
  end
   for i=ideb1,ifin1 do
     local span2= mw.html.create( 'span' )
       :attr('class', mw.ustring.format('iwpages lang-%s',lang2))
       :attr('title',mw.ustring.format('%s|%s|%d|%d',lang2,index,i+di,i+di))
       :attr('id',mw.ustring.format("%s:%s",lang2,index))
       :attr('lang',lang2)
       
       local span1= mw.html.create( 'span' )
       :attr('class', mw.ustring.format('iwpages lang-%s',lang1))
       :attr('title',mw.ustring.format('%s|%s|%d|%d',lang1,index,i,i))
       :attr('id',mw.ustring.format("%s:%s",lang1,index))
       :attr('lang',lang1)
     
     td1=mw.ustring.format('<td width="%d%%">%s</td>',larg1,tostring(span1))
     td2=mw.ustring.format('<td width="%d%%">%s</td>',larg2,tostring(span2))
     
     if ideb1<ideb2 then 
       retval=retval..'<tr style="vertical-align:top;">'..td1..td2..'</tr>\n'
     else
       retval=retval..'<tr style="vertical-align:top;">'..td2..td1..'</tr>\n'
     end
     --retval=retval..mw.ustring.format('<tr style="vertical-align:top;"><td width="%d%%">%s</td><td width="%d%%">%s</td></tr>\n',larg1,tostring(span1),larg2,tostring(span2))
   end
   retval=retval..'</table>\n'
   return retval
end

return p