Modulo:Software/Archivio/Linguaggi di programmazione

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.

Vecchie istruzioni

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

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]]'] = 'c',
	['[[C++]]'] = 'c++',
	['[[Java]]'] = 'java',
	['[[JavaScript]]'] = 'javascript',
	['[[PHP]]'] = 'php'
}

--[[
* Alcuni linguaggi non hanno ancora (o non necessitano) della categoria per il software proprietario
]]
local hasProprietaryCategory = {
	['c'] = true,
	['c++'] = false,
	['java'] = false,
	['javascript'] = false,
	['php'] = false
}

function p.main(frame)
	local s = ''

	local wd_languages = mWikidata._getProperty( { 'P277', from = 'Q161234'}, true )

	--[[
	* Emerge l'inutilità di Module:Arguments.
	]]
	local categorizzare = frame.args[1]
	local libero        = frame.args[2]

	for i, language_wikilink in pairs(wd_languages) do
		local language = languages[language_wikilink]
		if language then
			s = s .. frame:expandTemplate{
				title = 'Software/Linguaggio',
				args = {
					language,
					categorizzare,
					libero,
					proprietaria_on = hasProprietaryCategory[language] and 'sì' or 'no'
				}
			}
		else
			s = s .. '[[Categoria:Linguaggio di programmazione da Wikidata non previsto]]'
		end
	end
	return s
end

return p