Modulo:Pg

La documentazione per questo modulo può essere creata in Modulo:Pg/man

local p = {}
local indici= {}
-- abbreviazioni per opere multi-indice con indici analitici finali
indici["dec1"]="Boccaccio - Decameron I.djvu"
indici["dec2"]="Boccaccio - Decameron II.djvu"
indici["polo1"]="Polo - Il milione, Pagani, Firenze 1827, I.djvu"
indici["polo2"]="Polo - Il milione, Pagani, Firenze 1827, II.djvu"
indici["gio1"]="Gioberti - Del rinnovamento civile d'Italia, vol. 1, 1911 - BEIC 1832099.djvu"
indici["gio2"]="Gioberti - Del rinnovamento civile d'Italia, vol. 2, 1911 - BEIC 1832860.djvu"
indici["gio3"]="Gioberti - Del rinnovamento civile d'Italia, vol. 3, 1912 - BEIC 1833665.djvu"
indici["ban1"]="Bandello - Novelle, Laterza 1910, I.djvu"
indici["ban2"]="Bandello - Novelle, Laterza 1910, II.djvu"
indici["ban3"]="Bandello - Novelle, Laterza 1911, III.djvu"
indici["ban4"]="Bandello - Novelle, Laterza 1911, IV.djvu"
indici["ban5"]="Bandello - Novelle, Laterza 1912, V.djvu"
indici["goz1"]="Gozzi - Memorie Inutili, vol 1, 1910 - BEIC 1837632.djvu"
indici["goz2"]="Gozzi - Memorie Inutili, vol 2, 1910 - BEIC 1838429.djvu"
indici["ml12"]="Le mille e una notti, 1852, I-II.djvu"
indici["ml34"]="Le mille ed una notti, 1852, III-IV.djvu"
indici["ml56"]="Le mille ed una notti, 1852, V-VI.djvu"
indici["ml78"]="Le mille ed una notti, 1852, VII-VIII.djvu"
indici["si1"]="Balbo, Cesare – Della storia d'Italia dalle origini fino ai nostri giorni, Vol. I, 1913 – BEIC 1740806.djvu"
indici["si2"]="Balbo, Cesare – Storia d'Italia dalle origini fino ai nostri giorni, Vol. II, 1914 – BEIC 1741401.djvu"
indici["cc1"]="Cristoforo Colombo- storia della sua vita e dei suoi viaggi - Volume I (1857).djvu"
indici["cc2"]="Cristoforo Colombo- storia della sua vita e dei suoi viaggi - Volume II (1857).djvu"
indici["t1"] = "Tiraboschi - Storia della letteratura italiana, Tomo I, Classici italiani, 1822, I.djvu"
indici["t2"] = "Tiraboschi - Storia della letteratura italiana, Tomo II, Classici italiani, 1823, II.djvu"
indici["t3"] = "Tiraboschi - Storia della letteratura italiana, Tomo III, Classici italiani, 1823, III.djvu"
indici["t4"] = "Tiraboschi - Storia della letteratura italiana, Tomo IV, Classici italiani, 1823, IV.djvu"
indici["t5"] = "Tiraboschi - Storia della letteratura italiana, Tomo V, parte 1, Classici Italiani, 1823, V.djvu"
indici["t6"] = "Tiraboschi - Storia della letteratura italiana, Tomo V, parte 2, Classici italiani, 1823, VI.djvu"
indici["t7"] = "Tiraboschi - Storia della letteratura italiana, Tomo VI, parte 1, Classici italiani, 1824, VII.djvu"
indici["t8"] = "Tiraboschi - Storia della letteratura italiana, Tomo VI, parte 2, Classici italiani, 1824, VIII.djvu"
indici["t9"] = "Tiraboschi - Storia della letteratura italiana, Tomo VI, parte 3, Classici italiani, 1824, IX.djvu"
indici["t10"] = "Tiraboschi - Storia della letteratura italiana, Tomo VII, parte 1, Classici italiani, 1824, X.djvu"
indici["t11"] = "Tiraboschi - Storia della letteratura italiana, Tomo VII, parte 2, Classici italiani, 1824, XI.djvu"
indici["t12"] = "Tiraboschi - Storia della letteratura italiana, Tomo VII, parte 3, Classici italiani, 1824, XII.djvu"
indici["t13"] = "Tiraboschi - Storia della letteratura italiana, Tomo VII, parte 4, Classici italiani, 1824, XIII.djvu"
indici["t14"] = "Tiraboschi - Storia della letteratura italiana, Tomo VIII, parte 1, Classici italiani, 1824, XIV.djvu"
indici["t15"] = "Tiraboschi - Storia della letteratura italiana, Tomo VIII, parte 2, Classici italiani, 1824, XV.djvu"
indici["t16"] = "Tiraboschi - Storia della letteratura italiana, Tomo IX, Indici, Classici italiani, 1826, XVI.djvu"
indici["gui1"] = "Guicciardini, Francesco – Storia d'Italia, Vol. I, 1929 – BEIC 1845433.djvu"
indici["gui2"] = "Guicciardini, Francesco – Storia d'Italia, Vol. II, 1929 – BEIC 1846262.djvu"
indici["gui3"] = "Guicciardini, Francesco – Storia d'Italia, Vol. III, 1929 – BEIC 1846967.djvu"
indici["gui4"] = "Guicciardini, Francesco – Storia d'Italia, Vol. IV, 1929 – BEIC 1847812.djvu"
indici["gui5"] = "Guicciardini, Francesco – Storia d'Italia, Vol. V, 1929 – BEIC 1848561.djvu"
indici["n1"] = "I Nibelunghi, Hoepli, 1889, I.djvu"
indici["n2"] = "I Nibelunghi, Hoepli, 1889, II.djvu"
indici["alf1"] = "Alfieri, Vittorio – Tragedie, Vol. I, 1946 – BEIC 1727075.djvu"
indici["alf2"] = "Alfieri, Vittorio – Tragedie, Vol. II, 1946 – BEIC 1727862.djvu"
indici["alf3"] = "Alfieri, Vittorio – Tragedie, Vol. III, 1947 – BEIC 1728689.djvu"
indici["sar1"] = "Sarpi, Paolo – Istoria del Concilio tridentino, Vol. I, 1935 – BEIC 1916022.djvu"
indici["sar2"] = "Sarpi, Paolo – Istoria del Concilio tridentino, Vol. II, 1935 – BEIC 1916917.djvu"
indici["sar3"] = "Sarpi, Paolo – Istoria del Concilio tridentino, Vol. III, 1935 – BEIC 1917972.djvu"
indici["mar1"] = "Doni, Anton Francesco – I marmi, Vol. I, 1928 – BEIC 1814190.djvu"
indici["mar2"] = "Doni, Anton Francesco – I marmi, Vol. II, 1928 – BEIC 1814755.djvu"
-- in nsPagina riceve un numero di pagina del libro e restituisce il link alla pagina djvu che contiene la pagina
function p.b2dt(frame)
	local base = mw.title.getCurrentTitle()
	local rootText=base.rootText
	local parent = frame:getParent()
	local paginaLibro=parent.args[1]
	local ancora=nil
	local pos=string.find(paginaLibro,"#")
	if pos~=nil then
		ancora=string.sub(paginaLibro,pos+1)
		paginaLibro=string.sub(paginaLibro,1,pos-1)
	end
-- un eventuale terzo parametro di Pg indica una fonte dati alternativa
	if parent.args[3] and parent.args[3]~="" then
--		if parent.args[3]=="polo1" then
--			rootText="Polo - Il milione, Pagani, Firenze 1827, I.djvu"
--		end
--		if parent.args[3]=="polo2" then
--			rootText="Polo - Il milione, Pagani, Firenze 1827, II.djvu"
--		end
		if indici[parent.args[3]]==nil then 
			rootText=parent.args[3] 
		else 
			rootText=indici[parent.args[3]]
		end
	end
	local paginaDati="Modulo:Dati/"..rootText
	local ok,pagine = pcall(mw.loadData,paginaDati)
	local pageDisplay = paginaLibro
	if string.find(pageDisplay,"%.") then
	  pageDisplay=string.sub(pageDisplay,1,string.find(pageDisplay,"%.")-1)
	end
	if parent.args[2] and parent.args[2] ~="" then 
	     pageDisplay=parent.args[2]
	end
	
	if ok then
		local pageDjvu = pagine.b2d[paginaLibro]
		if pageDjvu then
			if ancora==nil then
				return '[[Pagina:'..rootText..'/'..pageDjvu..'|'..pageDisplay..']]'
			else
				return '[[Pagina:'..rootText..'/'..pageDjvu.."#"..ancora..'|'..pageDisplay..']]'
			end
		end
	end
   return parent.args[1]
end

-- in ns0 riceve un numero di pagina del libro e restituisce il link al capitolo che contiene la pagina
function p.b2ns0(frame)
   local titolo=mw.title.getCurrentTitle()
   local parent = frame:getParent()
   local paginaDati=""
   local testo=""
   local paginaLibro=parent.args[1]
   local ancora=nil
   local pos=string.find(paginaLibro,"#")
	if pos~=nil then
		ancora=string.sub(paginaLibro,pos+1)
		paginaLibro=string.sub(paginaLibro,1,pos-1)
	end
   if parent.args[3] and parent.args[3]~="" then
--   		if parent.args[3]=="polo1" then
--   			paginaDati="Modulo:Dati/Polo - Il milione, Pagani, Firenze 1827, I.djvu"
--   		end
--   		if parent.args[3]=="polo2" then
--   			paginaDati="Modulo:Dati/Polo - Il milione, Pagani, Firenze 1827, II.djvu"
--   		end
		if indici[parent.args[3]]==nil then 
			paginaDati="Modulo:Dati/"..parent.args[3]
		else 
			paginaDati="Modulo:Dati/"..indici[parent.args[3]]
		end
		
   else
   		testo=titolo:getContent()
   		paginaDati="Modulo:Dati/".. (string.match(testo,'index="([^"]-)"') or '')
   end

   local ok,pagine = pcall(mw.loadData,paginaDati)
   --if ok then
   	  -- return paginaDati
   --end
   local pageDisplay = paginaLibro
   if string.find(pageDisplay,"%.") then
      pageDisplay=string.sub(pageDisplay,1,string.find(pageDisplay,"%.")-1)
   end
   if parent.args[2] and parent.args[2] ~= "" then 
   	  pageDisplay=parent.args[2]
   end
   if ok then
      paginaDjvu=pagine.b2d[paginaLibro]
      for i,v in pairs(pagine.cap) do
      	if not v.from or not v.to or not paginaDjvu then
      		return pageDisplay..'[[Categoria:Pagine con errori in Pg]]'
      	else
			if paginaDjvu >= v.from and paginaDjvu <=v.to then
				if ancora==nil then
					return '[['..v.nome.."#pagename"..paginaDjvu..'|'..pageDisplay..']]'
				else
					return '[['..v.nome.."#"..ancora..'|'..pageDisplay..']]'
				end
			end
		end
      end
   end
   return paginaLibro
end
-- in ns0 restituisce l'indice di eventuali sottocapitoli del capitolo
function p.indice(frame)
   local titolo=mw.title.getCurrentTitle()
   local testo=titolo:getContent()
   local paginaDati="Modulo:Dati/"..string.match(testo,'index="([^"]-)"')
   if paginaDati==nil then
           paginaDati="Modulo:Dati/"..string.match(testo,"URL della versione cartacea a fronte%s*=%s*Indice:([^%c]+)%c-")
       end
   local pagine=mw.loadData(paginaDati)
   local testo="== INDICE ==\n"
   local y=0
   for i,v in pairs(pagine.cap) do
       sottocapitolo=string.match(v.nome,titolo.text.."/(.+)")
       if sottocapitolo ~= nil then
          sottocapitolo,y=string.gsub(sottocapitolo,"/","/")
          testo=testo..string.rep("*",y+1).." ''[["..v.nome.."|"..v.titolo.."]]''\n"
       end    
   end
   if testo=="== INDICE ==\n" then 
       testo=""
    end
    return testo   
end

-- in nsPagina riceve una stringa-ancora e restituisce il link alla pagina djvu che contiene l'ancora
-- test in corso su Dizionario mitologico ad uso di giovinetti
function p.l1(frame)
   local base = mw.title.getCurrentTitle()
   local paginaDati="Modulo:Dati/"..base.rootText
   local parent = frame:getParent()
   local ok,pagine = pcall(mw.loadData,paginaDati)
   local pageDisplay = parent.args[1]
   local pageShow=pageDisplay
   if parent.args[2] then 
   	  pageShow=parent.args[2]
   end
 
   if ok then
      if pagine.p2d[parent.args[1]]==nil then
      	return parent.args[1]
      else
      	return '[[Pagina:'..base.rootText..'/'..pagine.p2d[parent.args[1]]..'#'..pageDisplay..'|'..pageShow..']]'
      end
   end
   return parent.args[1]
end
-- in ns0 costruisce il link sulla base dell'iniziale dell'ancora
-- test in corso su Dizionario mitologico ad uso di giovinetti
function p.l2(frame)
   local titolo=mw.title.getCurrentTitle()
   local testo=titolo:getContent()
   local paginaDati="Modulo:Dati/"..string.match(testo,'index="([^"]-)"')
   local ok,pagine = pcall(mw.loadData,paginaDati)
 
   local parent = frame:getParent()
   local pageDisplay = parent.args[1]
     local pageShow=pageDisplay
   if parent.args[2] then 
   	  pageShow=parent.args[2]
   end
   if ok then
      local iniziale=mw.ustring.sub(parent.args[1],1,1)
      if iniziale=="J" then iniziale="I" end
      return '[['..'Dizionario mitologico ad uso di giovanetti/Mitologia/'..iniziale..'#'..pageDisplay..'|'..pageShow..']]'
 
   end
   return parent.args[1]
end

-- in nsPagina riceve una stringa-ancora e restituisce il link alla pagina djvu che contiene l'ancora
-- test in corso su Dizionario mitologico ad uso di giovinetti
function p.l3(frame)
   local base = mw.title.getCurrentTitle()
   local paginaDati="Modulo:Dati/"..base.rootText
   local parent = frame:getParent()
   local ok,pagine = pcall(mw.loadData,paginaDati)
   local pageDisplay = parent.args[1]
 
   if ok then
      if pagine.p2d[parent.args[1]]==nil then
      	return parent.args[1]
      else
      	return 'Pagina:'..base.rootText..'/'..pagine.p2d[parent.args[1]]..'#'..pageDisplay
      end
   end
   return parent.args[1]
end
-- in ns0 costruisce il link sulla base dell'iniziale dell'ancora
-- test in corso su Dizionario mitologico ad uso di giovinetti
function p.l4(frame)
   local titolo=mw.title.getCurrentTitle()
   local testo=titolo:getContent()
   local paginaDati="Modulo:Dati/"..string.match(testo,'index="([^"]-)"')
   local ok,pagine = pcall(mw.loadData,paginaDati)
 
   local parent = frame:getParent()
   local pageDisplay = parent.args[1]
 
   if ok then
   	  if mw.ustring.sub(pageDisplay,1,4)=="nota" then
   	  	return 'Dizionario mitologico ad uso di giovanetti/Note'..'#'..pageDisplay
   	  else
         local iniziale=mw.ustring.sub(pageDisplay,1,1)
         if iniziale=="J" then iniziale="I" end
         return 'Dizionario mitologico ad uso di giovanetti/Mitologia/'..iniziale..'#'..pageDisplay
      end
   end
   return parent.args[1]
end
   
return p