Modulo:Software/Archivio/Linguaggi di programmazione

Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Software/Archivio/Linguaggi di programmazione/man (modifica · cronologia)
Sandbox: Modulo:Software/Archivio/Linguaggi di programmazione/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Software/Archivio/Linguaggi di programmazione/test (modifica · cronologia · Esegui)
Modulo Lua che fu utilizzato soltanto da febbraio a marzo 2017 per transizione a Wikidata del template {{Software}}, per ricavare i linguaggi di programmazione.
Ora questo modulo è rimpiazzato dal Modulo:Software.
Utilizzo
Non dovrebbe essere utilizzato direttamente nelle voci, ma il suo funzionamento è il seguente:
{{#invoke:Linguaggi di programmazione|main|attivatore|categorie|softwarelibero}}
Dove le uniche cose che devono variare:
attivatore
- Se il campo è vuoto (senza spazi!) questo modulo si attiva. Se vi è del testo, il modulo non fa niente di particolare, salvo applicare alcune categorie nascoste.
categorie
- Questo campo sarebbe il valore di {{Software|Categorie}}
softwarelibero
- Questo campo sarebbe il valore di {{Software|SoftwareLibero}}
Il parametro attivatore
è un hack per non scrivere due volte lo stesso elenco di linguaggi se la voce già li specificava manualmente. Analogamente si potrebbe non richiamare affatto questo modulo ma così facendo non verrebbero applicate utili categorizzazioni nascoste analoghe al concetto del template {{Controllo Wikidata}}.
Esempi
Non dovrebbe essere utilizzato nelle voci, ma un suo utilizzo può essere il seguente:
{{#invoke:Linguaggi di programmazione|main|c++|sì|sì}}
Dato che si è specificato l'attivatore
(testo casuale, c++
), allora questo modulo non fa nulla, se non applicare alcune categorie nascoste.
{{#invoke:Linguaggi di programmazione|main||sì|sì}}
Dato che non si è specificato l'attivatore
, il modulo si attiva e stampa in output i linguaggi leggibili da Wikidata, categorizza la voce e applica alcune categorie nascoste.
Alcune voci beneficiarie
- Seafile - priva di {{Software|Linguaggio|SoftwareLibero}} ma che ottiene comunque C, Python e C++ nell'infobox e Categoria:Software libero in C, Categoria:Software libero in Python e Categoria:Software libero in C++
Pagine correlate
--[[
* Modulo per categorizzare il software in base al linguaggio di programmazione da Wikidata (P277)
* Testare in: Utente:Valerio Bozzolan/Sandbox2
]]
local mWikidata = require('Modulo:Wikidata')
local p = {}
--[[
* TODO: Informarsi se mWikidata._getProperty() restituisce sempre un dannato wikilink
]]
local languages = {
['[[C (linguaggio)|C]]'] = 'c',
['[[C++]]'] = 'c++',
['[[Java (linguaggio di programmazione)|Java]]'] = 'java',
['[[JavaScript]]'] = 'javascript',
['[[PHP]]'] = 'php'
}
--[[
* Alcuni linguaggi non hanno ancora (o non necessitano) della categoria per il software proprietario
]]
local hasProprietaryCategory = {
['c'] = true
}
local SEPARATOR = '<br />'
function p.main(frame)
--[[
* true → Una table
]]
local wd_languages = mWikidata._getProperty( { 'P277' }, true )
--[[
* Emerge l'inutilità di Module:Arguments.
*
* Per ora si fa qualcosa solo se NON sono stati specificati linguaggi
]]
local operate = string.len( frame.args[1] ) < 2
local categorizzare = frame.args[2]
local libero = frame.args[3]
local s = ''
local ok = true
if wd_languages then
for i, language_wikilink in pairs(wd_languages) do
local language = languages[language_wikilink]
if language then
if operate then
--[[
* Di default non ha la categoria proprietaria
]]
if hasProprietaryCategory[language] == nil then
hasProprietaryCategory[language] = false
end
local separator = i > 1 and SEPARATOR or ''
s = s .. separator .. frame:expandTemplate{
title = 'Software/Linguaggio',
args = {
language,
categorizzare,
libero,
proprietaria_on = hasProprietaryCategory[language] and 'sì' or 'no'
}
}
end
else
--[[
* Linguaggio non ancora previsto
]]
ok = false
end
end
else
s = s .. '[[Categoria:Linguaggio di programmazione assente su Wikidata]]'
end
if not ok then
s = s .. '[[Categoria:Linguaggio di programmazione da Wikidata non previsto]]'
end
return s
end
return p