Modulo:Testo

Da Wikisource.

Prova

Per esempi in ns0 (link a sottopagine) vedi Alchünas Rimas Romaunschas


local p = {}
local c = require('Modulo:Common')

-- logica:
-- leggere la pagina indicata nel parametro 1
-- risalire alla pagina Indice, se c'è, e leggerla
-- estrarre i dati significativi da entrambe

function p.testo(frame) 
	local result="prova"
	local title=mw.title.getCurrentTitle()
	frame=frame:getParent()
	-- carico i parametri di testo
	--local args=frame_1.args
	local args=frame.args
	if string.sub(args[1],1,1)=="/" then 
		args[1]=title.text..args[1]
	end
	if args[2]==nil then
		args[2]=mw.text.split(args[1],"/")
		args[2]=args[2][#args[2]]
	end
	local dataNs0={}
	local dataIndex={}
	-- catturo titolo e testo della pagina puntata da testo
	dataNs0.title=mw.title.new(args[1])
	dataNs0.text=dataNs0.title:getContent()
	dataNs0.index=string.match(dataNs0.text,'index="(.-)"')
	dataNs0.SAL=string.match(dataNs0.text,"avz=(%d+)")
	dataNs0.codeSAL=" [[File:xxx%.svg|9px]]"
	dataNs0.codeSAL=string.gsub(dataNs0.codeSAL,"xxx",dataNs0.SAL)
	dataNs0.linkEpub='[[File:EPUB silk icon.svg|12px|link='..'https://tools.wmflabs.org/wsexport/tool/book.php?lang=it&format=epub&page='..mw.uri.encode(args[1], "WIKI" )..']]  '
	-- se esiste riferimento a Indice
	if dataNs0.index ~=nil then
		-- catturo titolo e testo della pagina collegata ed estraggo i dati bbliografici
		dataIndex.indexLink='<span class="ws-noexport">[[File:Crystal_Clear_app_kdict.png|14px|link=Index:'..dataNs0.index..']]</span>&nbsp;&nbsp;'
		dataIndex.title=mw.title.new("Index:"..dataNs0.index)
		dataIndex.text=dataIndex.title:getContent()
		dataIndex.autore=string.match(dataIndex.text,"Autore=(.-)\n|")
		dataIndex.editore=string.match(dataIndex.text,"Editore=(.-)\n|")
		dataIndex.anno=string.match(dataIndex.text,"Anno=(.-)\n|")
		dataIndex.luogo=string.match(dataIndex.text,"Città=(.-)\n|")
		dataIndex.traduttore=string.match(dataIndex.text,"Traduttore=(.-)\n|")
		dataIndex.annoTraduzione=string.match(dataIndex.text,"Città=(.-)\n|")
	else
		args.tipo="tradizionale"
	end
	if args.tipo==nil then args.tipo="" end
	result="''[["..args[1].."|"..args[2].."]]'' "..dataNs0.codeSAL
	-- se non + in ns0 oppure è Pagina principale
	if title.namespace~=0 or title.text=="Pagina principale"  then
		if args.tipo~="tradizionale" then
			result=result..", [[Autore:"..dataIndex.autore.."|"..dataIndex.autore.."]]"
			if dataIndex.traduttore~=nil and dataIndex.traduttore~="" then
				result=result..", traduzione di [[Autore:"..dataIndex.traduttore.."|"..dataIndex.traduttore.."]]"
			end
			result=result..", "..dataIndex.luogo..", "..dataIndex.editore..", "..dataIndex.anno
		end
	end
	if (title.namespace~=0 or title.text=="Pagina principale") and dataIndex.indexLink ~= nil then
		result= dataIndex.indexLink..result
	end
	if (title.namespace~=0 or title.text=="Pagina principale")  then
		result= dataNs0.linkEpub..result
	end
	return result
	
end

function p.categorieTestoAnno(frame)
	str = frame.args[1]
	if not str then
		return ''
	else
		str = mw.text.trim(str)
	end
	if str == 'Antichità' then
		return "[[:Categoria:Testi dell'Antichità|Antichità]]"
	else
		date = str:gsub(" %- ", "/"):gsub("%-", "/")
		cat = ''
		for data in date:gmatch("[^/]+") do 
			data = mw.text.trim(data)
			if cat ~= '' then
				cat = cat .. '-'
			end
			cat = cat .. "[[:Categoria:Testi del " .. data .. "|" .. data .. "]]"
		end
		return cat
	end
end

function p.linkTesto(frame)
	link = frame.args[1]
	label = frame.args[2]
	anchor = frame.args[3]
	
	if not label or label == '' then
		label = c.stripTitolo2(link)
	end
	if anchor then
		anchor = '#'..anchor
	end
	return "''[["..link..anchor..'|'..label.."]]''"
end


function p.linkAutore(frame)
	autori = frame.args[1]
	link = ''
	for autore in autori:gmatch("[^/]+") do 
		if link ~= '' then
			link = link ..', '
		end
		link = link .. '[[Autore:' .. autore .. '|' .. autore:gsub(" %(.*%)", "") .. ']]'
	end
	return link
end

return p