La documentazione per questo modulo può essere creata in Modulo:Aeropuerte/man
--[[ * Modulo a supporto del template Aeropuerte. ]]-- require('strict') local getArgs = require('Modulo:Arguments').getArgs local mWikidata = require('Modulo:Wikidata') -- Legge le piste dagli argomenti passati al modulo e le restituisce come sequence Lua. -- -- @param {table} args -- @return {table} local function getPiste(args) local params = { 'Orientamento(%d+)', 'Lunghezza(%d+)_m', 'Lunghezza(%d+)', 'Superficie(%d+)', 'Note(%d+)' } local piste = {} for k, v in pairs(args) do if type(k) == 'string' then for _, param in ipairs(params) do local num = k:match('^' .. param .. '$') if num then num = tonumber(num) piste[num] = piste[num] or {} piste[num][param:gsub('%(%%d%+%)', '')] = v break end end end end return piste end -- Ricerca le piste da Wikidata in P529 e le restituisce come sequence Lua. -- -- @return {table} local function getPisteFromWikidata() local piste = {} local claims claims = mWikidata._getClaims('P529') or {} for _, claim in ipairs(claims) do piste[#piste + 1] = { Orientamento = mWikidata._formatStatement(claim), Lunghezza_m = mWikidata._formatQualifiers(claim, 'P2043', { unit = 'metro', formatnum = true }), Larghezza = mWikidata._formatQualifiers(claim, 'P2049', { unit = 'metro', formatnum = true }), Superficie = mWikidata._formatQualifiers(claim, 'P186') } end return piste end -- Restituisce una tabella HTML contenente le piste. -- Il colore dell'intestazione è ottenuto dal parametro "Struttura" tramite il sottotemplate Colore. -- -- @param {table} piste -- @param {string} struttura -- @return {string} local function formatPiste(piste, struttura) local tableStyle = { ['text-align'] = 'center', ['line-height'] = '1.2em' } local thcolor = mw.getCurrentFrame():expandTemplate { title = 'Aeropuerte/Colore', args = { struttura } } local tdcolor = '#d3d3d3' local tableNode = mw.html.create('table') tableNode :addClass('sinottico infobox table-responsive infobox table-responsive_annidata') :css(tableStyle) :tag('tr') :tag('th') :css('width', '25%') :css('text-align', 'center') :css('background-color', thcolor) :wikitext('Orientamento ([[QFU]])') :done() :tag('th') :css('width', '40%') :css('text-align', 'center') :css('background-color', thcolor) :wikitext('Lunghezza') :done() :tag('th') :css('width', '35%') :css('text-align', 'center') :css('background-color', thcolor) :wikitext('Superficie') :done() for _, pista in ipairs(piste) do if pista.Orientamento then local lunghezza if pista.Lunghezza then lunghezza = pista.Lunghezza elseif pista.Lunghezza_m then local larghezza = pista.Larghezza and (' x ' .. pista.Larghezza) or '' lunghezza = pista.Lunghezza_m .. larghezza .. ' [[metro|m]]' end tableNode:tag('tr') :tag('td') :css('background-color', tdcolor) :wikitext(pista.Orientamento) :done() :tag('td') :css('background-color', tdcolor) :wikitext(lunghezza) :done() :tag('td') :css('background-color', tdcolor) :wikitext(pista.Superficie) :done() if pista.Note then tableNode:tag('tr') :tag('td') :attr('align', 'right') :attr('colspan', '3') :wikitext(pista.Note) :done() end end end return tostring(tableNode) end -- ============================================================================= -- Funzioni esportate -- ============================================================================= local p = {} -- Funzione per {{#invoke:Aeropuerte|piste}} function p.piste(frame) local args = getArgs(frame, { parentOnly = true }) local piste = args.Orientamento1 and getPiste(args) or {} piste = #piste > 0 and piste or getPisteFromWikidata() return #piste > 0 and formatPiste(piste, args.Struttura) or '' end return p