Modulo:Software/Archivio/Linguaggi di programmazione: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Valerio Bozzolan ha spostato la pagina Modulo:Sandbox/Valerio Bozzolan a Modulo:Modulo:Linguaggi di programmazione senza lasciare redirect: Funziona :^)
m Valerio Bozzolan ha spostato la pagina Modulo:Linguaggi di programmazione a Modulo:Software/Archivio/Linguaggi di programmazione senza lasciare redirect: template obsoleto
 
(28 versioni intermedie di 2 utenti non mostrate)
Riga 2:
* 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 = {}
 
--[[
* 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)
local wd_languages = mWikidata._getProperty_getClaims( { 'P277' }, true )
 
local nszero = mw.title.getCurrentTitle().namespace == 0
local s = ''
local okallFound = true
local libero improved = frame.args[3]false
local categorizzaretplEmpty = frame.args[21]
 
--[[
* Per ora si fa qualcosa solo se NON sono stati specificati linguaggi
* true → Una table
]]
if tplEmpty then
local wd_languages = mWikidata._getProperty( { 'P277' }, true )
tplEmpty = mw.text.trim(tplEmpty)
tplEmpty = string.len(tplEmpty) < 1
end
 
--[[
* tplEmpty → noLanguages = true → Si presume che non ci siano linguaggi
* Emerge l'inutilità di Module:Arguments.
* not tplEmpty → noLanguages = false → Ci sono già linguaggi applicati
*
* Per ora si fa qualcosa solo se NON sono stati specificati linguaggi
]]
local noLanguages = tplEmpty
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_wikilinklanguage in pairs(wd_languages) do
local wikidataQ = mWikidata._formatStatement(language, {formatting = 'raw'})
local language = languages[language_wikilink]
language = conf.wikidataToLanguageSlug[wikidataQ]
if language then
if operatetplEmpty 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, frame.args[2], mSoftware.isFreeSoftware(frame)}
args = {
language,
categorizzare,
libero,
proprietaria_on = hasProprietaryCategory[language] and 'sì' or 'no'
}
}
 
--[[
* Si è applicato un linguaggio
]]
noLanguages = false
improved = true
end
else
Line 73 ⟶ 58:
* Linguaggio non ancora previsto
]]
okallFound = false
end
end
if improved and nszero then
s = s .. '[[Categoria:Linguaggio di programmazione letto da Wikidata]]'
--[[
* 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
s = s .. '[[Categoria:Linguaggio di programmazione assente su Wikidata]]'
--[[
* Categoria applicata solo se il template specifica linguaggi ma Wikidata no
]]
s = s .. '[[Categoria:Linguaggio di programmazione assente su Wikidata]]'
end
end
 
if notnoLanguages okand 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