Modulo:Sentiero

Da Wikivoyage.
Info Istruzioni per l'uso
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Sentiero/man (modifica · cronologia)
Sandbox: Modulo:Sentiero/sandbox (modifica · cronologia) · Test: Modulo:Sentiero/test (modifica · cronologia · Esegui)

Vedi anche


--[[
	Source script:	https://it.wikivoyage.org/wiki/Modulo:Sentiero
	Maintainer:		Andyrom75
]]
local NS0Cat = require( 'Modulo:NS0Cat' ).NS0CatVal

local function _templateStyle( frame, src )
   return frame:extensionTag( 'templatestyles', '', { src = src } )
end

local function _isDefined(s)
	return s ~= '' and s
end

local function firstToUpper(str)
    return (str:gsub("^%l", string.upper))
end

local function _ValidaDifficolta(difficolta)
	local case =
	{
		["Turistico"] = "Turistico",
		["Turistico (T)"] = "Turistico",
		["T"] = "Turistico",
		["Escursionistico"] = "Escursionistico",
		["Escursionistico (E)"] = "Escursionistico",
		["E"] = "Escursionistico",
		["Escursionistico per esperti"] = "Escursionistico per esperti",
		["Escursionistico per esperti (EE)"] = "Escursionistico per esperti",
		["EE"] = "Escursionistico per esperti",
		["Escursionistico per esperti con attrezzature"] = "Escursionistico per esperti con attrezzature",
		["Escursionistico per esperti con attrezzature (EEA)"] = "Escursionistico per esperti con attrezzature",
		["EEA"] = "Escursionistico per esperti con attrezzature"
	}
	return case[firstToUpper(difficolta)] or (NS0Cat("Sentieri con difficoltà errata") .. '<span class="debuginfo" style="display:none;">Campo difficoltà vuoto o erroneamente valorizzato</span>')
end

local function _concatIndexed( tab )
	local tt = {}
	for _, v in pairs( tab ) do
		if tonumber(_) then
			tt[#tt+1] = v
		end
	end
	return table.concat( tt )
end

local function _Numero_sentiero(numero, larghezza, altezza, colore1, colore2, colore3)
	return mw.html.create( 'table' )
		:addClass('Numero_sentiero')
		:css('width', _isDefined(larghezza) or '50%')
		:tag( 'tr' )
			:tag( 'td' )
				:css('background-color', _isDefined(colore1) or '#d22304')
				:attr( 'height', _isDefined(altezza) or '22px' )
			:done()
			:tag( 'td' )
				:css('background-color', _isDefined(colore2) or '#ffffff')
				:wikitext( _isDefined(numero) or 'n.d.' )
			:done()
			:tag( 'td' )
				:css('background-color', _isDefined(colore3) or '#d22304')
		:allDone()
end

local function _Tappa_sentiero(immagine, dimensioniimg, didascaliaimg, partenzatappa, hpartenza, tempotappa, arrivotappa, harrivo, dislivellotappa, descrizionetappa)
	return mw.html.create( 'tr' )
		:tag( 'td' )
			:addClass('Tappa_sentiero')
			:attr( 'colspan', '2' )
			:tag( 'hr', { selfClosing = true } )
				:done()
			:wikitext((_isDefined(immagine) and ('[[File:' .. immagine .. '|thumb' .. (_isDefined(dimensioniimg) and ('|' .. dimensioniimg) or '') .. (_isDefined(didascaliaimg) and ('|' .. didascaliaimg) or '') .. ']]') or ''))
			:tag( 'table' )
				:tag( 'tr' )
					:tag( 'td' )
						:wikitext( "[[File:Flag icon green 4.svg|25px|Partenza]] '''Da''': " .. (_isDefined(partenzatappa) or 'n.d.') .. ' ' .. (_isDefined(hpartenza) and ('(' .. hpartenza .. ' m s.l.m.)') or '') .. ' &nbsp;' )
					:done()
					:tag( 'td' )
						:wikitext( '[[File:Crystal clock.svg|25px|Tempo di percorrenza]]' )
					:done()
					:tag( 'td' )
						:wikitext( _isDefined(tempotappa) or 'n.d.' )
					:done()
				:done()
				:tag( 'tr' )
					:tag( 'td' )
						:wikitext( "[[File:Flag icon red 4.svg|25px|Destinazione]] '''A''': " .. (_isDefined(arrivotappa) or 'n.d.') .. ' ' .. (_isDefined(harrivo) and ('(' .. harrivo .. ' m s.l.m.)') or '') .. ' &nbsp;' )
					:done()
					:tag( 'td' )
						:wikitext( "[[File:Dislivello voy.png|50px|Per dislivello si intende il dislivello totale della tappa, potrebbero esserci dislivelli più alti sia in discesa che in salita all'interno della tappa]]" )
					:done()
					:tag( 'td' )
						:wikitext( _isDefined(dislivellotappa) and (dislivellotappa .. ' m') or 'n.d.' )
					:done()
				:done()
			:done()
			:tag( 'div' )
				:wikitext( _isDefined(descrizionetappa) and ("'''Descrizione''': " .. descrizionetappa) or '' )
			:done()
	:allDone()
end

local function _Sentiero(frame)
	local args = frame.args
	local variableNode = _concatIndexed( args ) or ''
	if variableNode == '' then
		variableNode = mw.html.create( 'tr' )
			:tag( 'td' )
				:attr( 'colspan', '2' )
		:allDone()
	end
	local output = mw.html.create( 'table' )
		:addClass('Sentiero')
		:attr( 'cellspacing', '0' )
		:tag( 'tr' )
			:tag( 'td' )
				:tag( 'div' )
					:wikitext( "'''" .. (_isDefined(args.titolo) or mw.title.getCurrentTitle().text) .."'''" )
				:done()
			:done()
			:tag( 'td' )
				:attr( 'rowspan', '2' )
				:wikitext( _isDefined(args.logo) and ('[[File:' .. args.logo .. '|' .. (_isDefined(args.dimlogo) or '50px') .. ']]') or tostring(_Numero_sentiero(args.numero, args.larghezza, args.altezza, args.colore1, args.colore2, args.colore3)) )
			:done()
		:done()
		:tag( 'tr' )
			:tag( 'td' )
				:tag( 'table' )
					:tag( 'tr' )
						:tag( 'td' )
							:wikitext( "'''Lunghezza''': " .. (_isDefined(args.lunghezza) and (args.lunghezza .. ' km') or 'n.d.'))
						:done()
						:tag( 'td' )
							:wikitext( '[[File:Dislivello voy.png|50px|Dislivello totale della tappa: potrebbero esserci dislivelli maggiori o minori in salita e/o discesa]] ' .. (_isDefined(args.dislivello) and (args.dislivello .. ' m') or 'n.d.'))
						:done()
						:tag( 'td' )
							:wikitext( '[[File:Crystal clock.svg|25px|Tempo]] ' .. (_isDefined(args.tempo) or '') )
						:done()
						:tag( 'td' )
							:wikitext( '[[File:Backpacker.png|20px|Difficoltà]] ' .. (_ValidaDifficolta(args.difficolta) or '') )
						:done()
					:done()
				:done()
			:done()
		:done()
		:node(variableNode)
	:done()
    return _templateStyle( frame, 'Sentiero/styles.css' ) .. tostring(output)
end

local p = {}

function p.SentieroTemplate(frame)
	return _Sentiero(frame:getParent())
end

function p.Sentiero(frame)
	return _Sentiero(frame)
end

function p.Numero_sentieroTemplate(frame)
	local args = frame:getParent().args
	return _Numero_sentiero(args.numero, args.larghezza, args.altezza, args.colore1, args.colore2, args.colore3)
end

function p.Numero_sentiero(frame)
	local args = frame.args
	return _Numero_sentiero(args.numero, args.larghezza, args.altezza, args.colore1, args.colore2, args.colore3)
end

function p.Tappa_sentieroTemplate(frame)
	local args = frame:getParent().args
	return _Tappa_sentiero(args.immagine, args.dimensioniimg, args.didascaliaimg, args.partenzatappa, args.hpartenza, args.tempotappa, args.arrivotappa, args.harrivo, args.dislivellotappa, args.descrizionetappa)
end

function p.Tappa_sentiero(frame)
	local args = frame.args
	return _Tappa_sentiero(args.immagine, args.dimensioniimg, args.didascaliaimg, args.partenzatappa, args.hpartenza, args.tempotappa, args.arrivotappa, args.harrivo, args.dislivellotappa, args.descrizionetappa)
end

return p