Module:Pg

La bibliothèque libre.

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

local p = {}

-- dans l'espace de nom Page reçoit un numéro de page du livre et renvoie le lien vers la bonne page du DjVu 
function p.b2dt(frame)
   local base = mw.title.getCurrentTitle()
   local pageData="Module:Data/"..base.rootText
   local parent = frame:getParent()
   local ok,page = pcall(mw.loadData,pageData)
   local pageDisplay = parent.args[1]
   if string.find(pageDisplay,"%.") then
      pageDisplay=string.sub(pageDisplay,1,string.find(pageDisplay,"%.")-1)
   end
   if parent.args[2] then 
   	  pageDisplay=parent.args[2]
   end
   
   if ok then
      return '[[Page:'..base.rootText..'/'..page.b2d[parent.args[1]]..'|'..pageDisplay..']]'
   end
   return parent.args[1]
end

-- dans ns0 reçoit un numéro de page du livre et renvoie le lien vers la section qui contient la page
function p.b2ns0(frame)
   local titre=mw.title.getCurrentTitle()
   local test=titre:getContent()
   local pageData="Module:Data/"..string.match(test,'index="([^"]-)"')
   local ok,page = pcall(mw.loadData,pageData)
   local parent = frame:getParent()
   local pageDisplay = parent.args[1]
   if string.find(pageDisplay,"%.") then
      pageDisplay=string.sub(pageDisplay,1,string.find(pageDisplay,"%.")-1)
   end
   if parent.args[2] then 
   	  pageDisplay=parent.args[2]
   end
   if ok then
      pageDjvu=page.b2d[parent.args[1]]
      for i,v in pairs(page.cap) do
         if pageDjvu >= v.from and pageDjvu <=v.to then
            return '[['..v.nom.."#pagename"..pageDjvu..'|'..pageDisplay..']]'
         end
      end
   end
   return parent.args[1]
end
   
--Crée les d2b et b2d d'une livre de l'espace Index (Livre:) --  p.msP('Livre:Backer - Bidasari.djvu')
function p.msP(titreLivre) --FIXME ,frame
	local d2b = {}
	local b2d = {}
	local frame = mw.getCurrentFrame() --FIXME à supprimer
	frame = frame:newChild{ title = titreLivre }
	mw.log(frame:getTitle()) --FIXME à supprimer
	if ( not frame ) then error ("Merci de fournir un argument frame à la fonction p.msP") end
	-- récupère le contenu de la page
	local page = mw.title.new(titreLivre)
	if not page:inNamespace('Index') then 
		error  ("Ce n'est pas une page d'Index")
	end
	local text = page:getContent()
	-- récupère le page list et le parse, on obtient un strip marker
	text = string.sub(text,string.find(text,"|Pages=")+7,string.find(text,"|Tomes=")-1)
	text = frame:preprocess(text)
	-- ERREUR
	mw.log(text)--FIXME à supprimer
	mw.log(frame:getTitle()..type(text)..string.len(text))--FIXME à supprimer
	text = mw.text.unstrip(text) --FIXME ne marche plus depuis 1.25
	mw.log(type(text)..string.len(text))--FIXME à supprimer
	return text
end
   
return p