Modulo:Software/Archivio/Linguaggi di programmazione

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

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
* 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