Modulo:Software/Configurazione

Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Software/Configurazione/man (modifica · cronologia)
Sandbox: Modulo:Software/Configurazione/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Software/Configurazione/test (modifica · cronologia · Esegui)
Questa configurazione permette la categorizzazione automatica per linguaggio di programmazione e per licenza delle voci che utilizzano il template {{Software}}.
Vale anche per le categorie che utilizzano il template {{Categoria software}}.
Linguaggi di programmazione
Ogni voce può avere linguaggi di programmazione espressi sia in Wikidata alla proprietà linguaggio di programmazione (P277), oppure può averlo espresso direttamente nel template {{Software}} tramite alcuni parametri.
Aggiunte
Per aggiungere un linguaggio, bisogna in primis aggiungere una nuova riga in config.language
, variando alcuni parametri a seconda di quante categorie abilitare per tale linguaggio.
- Linguaggio poco diffuso
In particolare, questa riga permette la categoria Categoria:Software in Action!:
Q343587 = langcat('Action!')
Notando che Q343587
è il codice dell'elemento Wikidata Action! (Q343587).
- Linguaggio discretamente diffuso
Questa permette la categoria Categoria:Software in Delphi ed eventualmente Categoria:Software libero in Delphi:
Q487378 = langcat('Delphi', true)
- Linguaggio diffuso
Questa permette la categoria Categoria:Software in C ed eventualmente Categoria:Software libero in C e Categoria:Software proprietario in C:
Q15777 = langcat('C', true, true)
Inoltre, è necessario aggiungere una nuova riga in config.languageSlugToWikidata
inserendo:
['alias del linguaggio per il parametro del template'] = 'proprietà del linguaggio su Wikidata',
quindi, ad esempio:
['action'] = 'Q343587',
con la possibilità di includere anche le varianti:
['action!'] = 'Q343587',
Licenze
Le licenze sono lette dalla proprietà Wikidata licenza (P275).
La configurazione config.licenseCategory
serve a creare una categoria associata ad una certa licenza. Alcune licenze minori possono convergere.
- Esempio
Se la voce ha licenza (P275)=licenza MIT (Q334661) allora sarà categorizzata in Categoria:Software con licenza MIT grazie a questa riga:
config.licenseCategory = {Q334661 = 'MIT'}
- Abbreviata
Se la categoria della licenza è in una forma abbreviata si deve aggiungere l'eccezione in config.licenseCategoryShorter
. Ad esempio:
config.licenseCategoryShorter = { Q178285 = 1}
Se la voce ha la licenza freeware (Q178285) allora si avrà la Categoria:Software freeware invece che Categoria:Software con licenza freeware.
Librerie
Al momento le librerie sono recuperate dalla proprietà toolkit o framework dell'interfaccia grafica (P1414) e trattate in maniera riconducibile ai #Linguaggi di programmazione.
Pagine correlate
- Template:Software/Linguaggio/man
- Categoria:Software per linguaggio di programmazione
- Categoria:Software per licenza
- Categoria:Software per libreria utilizzata
local config = {}
--[[
* Qualificatori Wikidata associati ai codici per il Template:Software/Linguaggio
]]
config.wikidataToLanguageSlug = {
Q154755 = 'ada',
Q343587 = 'action!',
Q165436 = 'assembly',
Q189248 = 'bash',
Q42979 = 'basic',
Q15777 = 'c',
Q2407 = 'c++',
Q2370 = 'c#',
Q487378 = 'delphi',
Q334879 = 'erlang',
Q83303 = 'fortran',
Q37227 = 'go',
Q504453 = 'groovy',
Q34010 = 'haskell',
Q8811 = 'html',
Q2053 = 'html5',
Q251 = 'java',
Q2005 = 'javascript',
Q132874 = 'lisp',
Q207316 = 'lua',
Q188531 = 'objective-c',
Q633894 = 'object pascal',
Q81571 = 'pascal',
Q59 = 'php',
Q28865 = 'python',
Q42478 = 'perl',
Q2044345 = 'pl',
Q161053 = 'ruby',
Q460584 = 'scala',
Q187560 = 'scheme',
Q5301 = 'tex',
Q201904 = 'qt',
Q5288 = 'tcl',
Q1138939 = 'vala',
Q726218 = 'xul'
}
--[[
* Alias da mantenere per ragioni storiche del Template:Software/Linguaggio
]]
config.languageSlugAlias = {
['action'] = 'action!',
['c ++'] = 'c++',
['cpp'] = 'c++',
['c sharp'] = 'c#',
['c #'] = 'c#',
['embarcadero delphi'] = 'delphi',
['js'] = 'javascript',
['objective c'] = 'objective-c',
['pl'] = 'pl',
['pgsql'] = 'pl',
['pl-pgsql'] = 'pl',
['pl/pgsql'] = 'pl'
}
--[[
* Categoria:Software in licenza $1
* Vediamo se proseguire con questa configurazione o se fruire della proprietà Wikidata short name P1813
]]
config.licenseCategory = {
Q7603 = 'GNU GPL',
Q27126812 = 'GNU GPL v1',
Q27016750 = 'GNU GPL v1+',
Q10513450 = 'GNU GPL v2',
Q27016752 = 'GNU GPL v2+',
Q10513445 = 'GNU GPL v3',
Q27016754 = 'GNU GPL v3+',
Q192897 = 'GNU LGPL',
Q23035974 = 'GNU LGPL v2',
Q27016756 = 'GNU LGPL v2',
Q18534390 = 'GNU LGPL v2.1',
Q27016757 = 'GNU LGPL v2.1+',
Q18534393 = 'GNU LGPL v3',
Q27016762 = 'GNU LGPL v3+',
Q1131681 = 'GNU AGPL',
Q27017230 = 'GNU AGPL v1',
Q27017232 = 'GNU AGPL v3',
Q27020062 = 'GNU AGPL v3+',
Q616526 = 'Apache',
Q13785927 = 'Apache 2.0',
Q334661 = 'MIT',
Q191307 = 'BSD',
Q18517294 = 'BSD 2-clausole',
Q18491847 = 'BSD 3-clausole',
Q21503790 = 'BSD 4-clausole',
-- Override di categorie minori da far (temporaneamente?) convergere:
Q27126812 = 'GNU GPL', -- GNU GPL v1
Q27016750 = 'GNU GPL', -- GNU GPL v1+
Q27017230 = 'GNU AGPL', -- GNU AGPL v1
Q27017232 = 'GNU AGPL', -- GNU AGPL v3
Q27020062 = 'GNU AGPL', -- GNU AGPL v3-
Q23035974 = 'GNU LGPL', -- GNU LGPL v2
Q27016756 = 'GNU LGPL', -- GNU LGPL v2+
Q18534390 = 'GNU LGPL', -- GNU LGPL v2.1
Q27016757 = 'GNU LGPL', -- GNU LGPL v2.1+
Q18534393 = 'GNU LGPL', -- GNU LGPL v3
Q27016762 = 'GNU LGPL', -- GNU LGPL v3+
Q18517294 = 'BSD', -- BSD 2-clausole
Q18491847 = 'BSD', -- BSD 3-clausole
Q21503790 = 'BSD', -- BSD 4-clausole
Q13785927 = 'Apache' -- Apache 2.0
}
return config