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
* Ekiga: from: Q1131287
]]
local mWikidata = require('Modulo:Wikidata')
local mSoftware = require('Modulo:Software')
local conf = mw.loadData('Modulo:Software/Configurazione')
local p = {}
local SEPARATOR = '<br />'
function p.main(frame)
local wd_languages = mWikidata._getClaims('P277')
local nszero = mw.title.getCurrentTitle().namespace == 0
local s = ''
local allFound = true
local improved = false
local tplEmpty = frame.args[1]
--[[
* Per ora si fa qualcosa solo se NON sono stati specificati linguaggi
]]
if tplEmpty then
tplEmpty = mw.text.trim(tplEmpty)
tplEmpty = string.len(tplEmpty) < 1
end
--[[
* tplEmpty → noLanguages = true → Si presume che non ci siano linguaggi
* not tplEmpty → noLanguages = false → Ci sono già linguaggi applicati
]]
local noLanguages = tplEmpty
if wd_languages then
for i, language in pairs(wd_languages) do
local wikidataQ = mWikidata._formatStatement(language, {formatting = 'raw'})
language = conf.wikidataToLanguageSlug[wikidataQ]
if language then
if tplEmpty then
local separator = i > 1 and SEPARATOR or ''
s = s .. separator .. frame:expandTemplate{
title = 'Software/Linguaggio',
args = {language, frame.args[2], mSoftware.isFreeSoftware(frame)}
}
--[[
* Si è applicato un linguaggio
]]
noLanguages = false
improved = true
end
else
--[[
* Linguaggio non ancora previsto
]]
allFound = false
end
end
if improved and nszero then
--[[
* Categoria applicata solo se si mostra tale informazione
]]
s = s .. '[[Categoria:Linguaggio di programmazione letto da Wikidata]]'
end
else
if not tplEmpty and nszero then
--[[
* Categoria applicata solo se il template specifica linguaggi ma Wikidata no
]]
s = s .. '[[Categoria:Linguaggio di programmazione assente su Wikidata]]'
end
end
if noLanguages and nszero then
if mSoftware._isFreeSoftware(frame) then
s = s .. '[[Categoria:Software libero senza linguaggio]]'
else
s = s .. '[[Categoria:Software senza linguaggio]]'
end
end
if not allFound and nszero then
s = s .. '[[Categoria:Linguaggio di programmazione da Wikidata non previsto]]'
end
return s
end
return p