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["ul1"]="Bartoli - Dell'uomo di lettere I.djvu"
indici["ul2"]="Bartoli - Dell'uomo di lettere II.djvu"
indici["v1"]="Vasari - Le vite de’ piu eccellenti pittori, scultori, et architettori, 1-2, 1568.djvu"
indici["v2"]="Vasari - Le vite de’ piu eccellenti pittori, scultori, et architettori, 3-1, 1568.djvu"
indici["v3"]="Vasari - Le vite de' piu eccellenti pittori, scultori, et architettori, 3-2, 1568.djvu"
indici["bI"]="Sonetti romaneschi I.djvu"
indici["bII"]="Sonetti romaneschi II.djvu"
indici["bIII"]="Sonetti romaneschi III.djvu"
indici["bIV"]="Sonetti romaneschi IV.djvu"
indici["bV"]="Sonetti romaneschi V.djvu"
indici["bVI"]="Sonetti romaneschi VI.djvu"
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["gui8"] = "Guicciardini, Francesco – Scritti politici e ricordi, 1933 – BEIC 1844634.djvu"
indici["gui9"] = "Guicciardini, Francesco – Scritti autobiografici e rari, 1936 – BEIC 1843787.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"
indici["di1"] = "Diario del principe Agostino Chigi Albani I.djvu"
indici["di2"] = "Diario del principe Agostino Chigi Albani II.djvu"
indici["fr1"] = "La fine di un regno, parte I, 1909.djvu"
indici["fr2"] = "La fine di un regno, parte II, 1909.djvu"
indici["fr3"] = "La fine di un regno, parte III, 1909.djvu"
indici["to1"] = "Toaldo - Completa raccolta di opuscoli osservazioni e notizie diverse contenute nei giornali astro-meteorologici, Vol 1 - 1802.djvu"
indici["to2"] = "Toaldo - Completa raccolta di opuscoli osservazioni e notizie diverse contenute nei giornali astro-meteorologici, Vol 2 - 1802.djvu"
indici["to3"] = "Toaldo - Completa raccolta di opuscoli osservazioni e notizie diverse contenute nei giornali astro-meteorologici, Vol 3 - 1802.djvu"
indici["to4"] = "Toaldo - Completa raccolta di opuscoli osservazioni e notizie diverse contenute nei giornali astro-meteorologici, Vol 4 - 1803.djvu"
indici["set1"] = "Settembrini, Luigi – Ricordanze della mia vita, Vol. I, 1934 – BEIC 1926061.djvu"
indici["set2"] = "Settembrini, Luigi – Ricordanze della mia vita, Vol. II, 1934 – BEIC 1926650.djvu"
indici["srn1"] = "Storia del reame di Napoli dal 1734 sino al 1825 I.pdf"
indici["srn2"] = "Storia del reame di Napoli dal 1734 sino al 1825 II.pdf"
indici["cron1"] = "Salimbene de Adam – Cronica, Vol. I, 1942 – BEIC 1910163.djvu"
indici["du1"]="Vico, Giambattista – Il diritto universale, Vol. I, 1936 – BEIC 1960672.djvu"
indici["du2"]="Vico, Giambattista – Il diritto universale, Vol. II, 1936 – BEIC 1961223.djvu"
indici["du3"]="Vico, Giambattista – Il diritto universale, Vol. III, 1936 – BEIC 1961890.djvu"
indici["sof1"]="Tragedie di Sofocle (Romagnoli) I.djvu"
indici["sof2"]="Tragedie di Sofocle (Romagnoli) II.djvu"
indici["sof3"]="Tragedie di Sofocle (Romagnoli) III.djvu"
indici["pr1"]="Calani - Il Parlamento del Regno d'Italia.pdf"
indici["pr2"]="Calani - Il Parlamento del Regno d'Italia, vol 2.pdf"
indici["pr3"]="Calani - Il Parlamento del Regno d'Italia, vol 3.pdf"
indici["of1"]="Odi di Pindaro (Romagnoli) I.djvu"
indici["of2"]="Odi di Pindaro (Romagnoli) II.djvu"
indici["eu1"]="Tragedie di Euripide (Romagnoli) I.djvu"
indici["eu2"]="Tragedie di Euripide (Romagnoli) II.djvu"
indici["eu3"]="Tragedie di Euripide (Romagnoli) III.djvu"
indici["eu4"]="Tragedie di Euripide (Romagnoli) IV.djvu"
indici["eu5"]="Tragedie di Euripide (Romagnoli) V.djvu"
indici["eu6"]="Tragedie di Euripide (Romagnoli) VI.djvu"
indici["api1"]="Storia degli antichi popoli italiani - Vol. I.djvu"
indici["api2"]="Storia degli antichi popoli italiani - Vol. II.djvu"
indici["api3"]="Storia degli antichi popoli italiani - Vol. III.djvu"
indici["ps1"]="Parlamento subalpino - Atti parlamentari, 1853-54, Documenti I.pdf"
indici["ps2"]="Parlamento subalpino - Atti parlamentari, 1853-54, Documenti II.pdf"
indici["ps3"]="Parlamento subalpino - Atti parlamentari, 1853-54, Documenti.pdf"
indici["dss11"]="De Sanctis, Francesco – Storia della letteratura italiana, Vol. I, 1912 – BEIC 1806199.djvu"
indici["dss12"]="De Sanctis, Francesco – Storia della letteratura italiana, Vol. II, 1912 – BEIC 1807957.djvu"
indici["ariomin1"]="Ariosto-Op.minori.1-(1857).djvu"
indici["ariomin2"]="Ariosto-Op.minori.2-(1857).djvu"
indici["sdI"]="Gibbon - Storia della decadenza e rovina dell'Impero romano I.djvu"
indici["sdII"]="Gibbon - Storia della decadenza e rovina dell'Impero romano II.djvu"
indici["sdIII"]="Gibbon - Storia della decadenza e rovina dell'Impero romano III.djvu"
indici["sdIV"]="Gibbon - Storia della decadenza e rovina dell'Impero romano IV.djvu"
indici["sdV"]="Gibbon - Storia della decadenza e rovina dell'Impero romano V.djvu"
indici["sdVI"]="Gibbon - Storia della decadenza e rovina dell'Impero romano VI.djvu"
indici["sdVII"]="Gibbon - Storia della decadenza e rovina dell'Impero romano VII.djvu"
indici["sdVIII"]="Gibbon - Storia della decadenza e rovina dell'Impero romano VIII.djvu"
indici["sdIX"]="Gibbon - Storia della decadenza e rovina dell'Impero romano IX.djvu"
indici["sdX"]="Gibbon - Storia della decadenza e rovina dell'Impero romano X.djvu"
indici["sdXI"]="Gibbon - Storia della decadenza e rovina dell'Impero romano XI.djvu"
indici["sdXII"]="Gibbon - Storia della decadenza e rovina dell'Impero romano XII.djvu"
indici["sdXIII"]="Gibbon - Storia della decadenza e rovina dell'Impero romano XIII.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="Module: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].."??"..'<!-- errore Pg -->[[Categoria:Pagine con errori in Pg]]'
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="Module:Dati/Polo - Il milione, Pagani, Firenze 1827, I.djvu"
--   		end
--   		if parent.args[3]=="polo2" then
--   			paginaDati="Module:Dati/Polo - Il milione, Pagani, Firenze 1827, II.djvu"
--   		end
		if indici[parent.args[3]]==nil then 
			paginaDati="Module:Dati/"..parent.args[3]
		else 
			paginaDati="Module:Dati/"..indici[parent.args[3]]
		end
   else
   		testo=titolo:getContent()
   		if testo then
   			paginaDati="Module:Dati/".. (string.match(testo,'index="([^"]-)"') or '')
   		else
   			return paginaLibro
   		end
   end

   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
      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..'??'..'<!-- errore Pg -->[[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="Module:Dati/"..string.match(testo,'index="([^"]-)"')
   if paginaDati==nil then
           paginaDati="Module: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="Module: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="Module: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="Module: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="Module: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