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 = {}
--[[
* "Vecchi" parametri del Template:Software/Linguaggio associati all'elemento Wikidata
]]
config.languageSlugToWikidata = {
['action'] = 'Q343587',
['action!'] = 'Q343587',
['actionscript'] = 'Q234657',
['ada'] = 'Q154755',
['assembly'] = 'Q165436',
['bash'] = 'Q189248',
['basic'] = 'Q42979',
['c'] = 'Q15777',
['c++'] = 'Q2407',
['c ++'] = 'Q2407',
['cpp'] = 'Q2407',
['coffescript'] = 'Q1106819',
['css'] = 'Q46441',
['c#'] = 'Q2370',
['c #'] = 'Q2370',
['c sharp'] = 'Q2370',
['d'] = 'Q319268',
['delphi'] = 'Q4037189',
['embarcadero delphi']
= 'Q487378',
['erlang'] = 'Q334879',
['fortran'] = 'Q83303',
['go'] = 'Q37227',
['groovy'] = 'Q504453',
['haskell'] = 'Q34010',
['html'] = 'Q8811',
['html5'] = 'Q2053',
['java'] = 'Q251',
['javascript'] = 'Q2005',
['js'] = 'Q2005',
['kotlin'] = 'Q3816639',
['lisp'] = 'Q132874',
['lua'] = 'Q207316',
['objective-c'] = 'Q188531',
['objective c'] = 'Q188531',
['object pascal'] = 'Q633894',
['pascal'] = 'Q81571',
['php'] = 'Q59',
['python'] = 'Q28865',
['powershell'] = 'Q840410',
['perl'] = 'Q42478',
['pl'] = 'Q2044345',
['pgsql'] = 'Q2044345',
['pl-pgsql'] = 'Q2044345',
['pl/pgsql'] = 'Q2044345',
['ruby'] = 'Q161053',
['scala'] = 'Q460584',
['scheme'] = 'Q187560',
['swift'] = 'Q17118377',
['tex'] = 'Q5301',
['qml'] = 'Q961543',
['qt'] = 'Q201904',
['tcl'] = 'Q5288',
['typescript'] = 'Q978185',
['vala'] = 'Q1138939',
['visual basic'] = 'Q2378',
['web'] = 'Q1141484',
['xul'] = 'Q726218',
['zig'] = 'Q51885456',
}
--[[
* Per dare un po' di robustezza a questa configurazione su lungo termine.
*
* Per disabilitare la categoria impostare `cat` a false.
*
* @param cat string|false Il placeholder di "Categoria:Software in $1"
* @param free true|nil Ha la categoria per software libero?
* @param nonfree true|nil Ha la categoria per software proprietà?
]]
local langcat = function(cat, free, nonfree)
return {
cat = cat,
free = free,
nonfree = nonfree
}
end
config.language = {
Q5289 = langcat('.NET' ),
Q343587 = langcat('Action!' ),
Q234657 = langcat(false ),
Q154755 = langcat('Ada' ),
Q165436 = langcat('Assembly' ),
Q189248 = langcat('Bash' ),
Q42979 = langcat('BASIC' ),
Q15777 = langcat('C', true, true),
Q2370 = langcat('C sharp', true, true),
Q2407 = langcat('C++', true, true),
Q1106819 = langcat('CoffeeScript' ),
Q46441 = langcat(false ),
Q319268 = langcat(false ),
Q4037189 = langcat('Delphi', true, true),
Q487378 = langcat('Delphi', true, true), -- embarcadero
Q334879 = langcat('Erlang' ),
Q83303 = langcat('Fortran' ),
Q37227 = langcat('Go' ),
Q504453 = langcat('Groovy' ),
Q34010 = langcat('Haskell' ),
Q8811 = langcat('HTML' ),
Q2053 = langcat('HTML5' ),
Q251 = langcat('Java', true ),
Q2005 = langcat('JavaScript', true ),
Q3816639 = langcat('Kotlin' ),
Q132874 = langcat('Lisp', true ),
Q207316 = langcat('Lua' ),
Q633894 = langcat('Object Pascal', true, true),
Q188531 = langcat('Objective-C', true ),
Q81571 = langcat('Pascal' ),
Q42478 = langcat('Perl', true ),
Q59 = langcat('PHP', true ),
Q2044345 = langcat('PL/pgSQL' ),
Q840410 = langcat('PowerShell' ),
Q28865 = langcat('Python', true, true),
Q961543 = langcat('QML' ),
Q161053 = langcat('Ruby' ),
Q460584 = langcat('Scala' ),
Q187560 = langcat('Scheme' ),
Q17118377 = langcat('Swift' ),
Q5301 = langcat('TeX' ),
Q5288 = langcat('Tcl' ),
Q978185 = langcat('TypeScript' ),
Q726218 = langcat('XUL' ),
Q1138939 = langcat('Vala' ),
Q2378 = langcat('Visual Basic' ),
Q1141484 = langcat('WEB' ),
Q51885456 = langcat(false ),
-- Toolkits:
Q189464 = langcat('GTK+', true ),
Q201904 = langcat('Qt', true, true),
Q310974 = langcat('ncurses' ),
Q284982 = langcat('wxWidgets' )
}
--[[
* 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',
Q308915 = 'MPL',
Q26737735 = 'MPL 1.1',
Q25428413 = 'MPL 2.0',
Q18526202 = 'X11',
Q191307 = 'BSD',
Q18517294 = 'BSD 2-clausole',
Q18491847 = 'BSD 3-clausole',
Q21503790 = 'BSD 4-clausole',
Q178285 = 'freeware',
-- 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
Q18526202 = 'MIT', -- X11 License
Q26737735 = 'MPL', -- MPL 1.1
Q25428413 = 'MPL' -- MPL 2.0
}
--[[
* Categoria:Software $1
* Specificare le licenze che hanno una categorizzazione abbreviata.
]]
config.licenseCategoryShorter = {
Q178285 = 1 -- freeware
}
-------- ROBA VECCHIA DA CANCELLARE A FINE MARZO 2017 SE TUTTO FUNZIONA --------
--[[
* Qualificatori Wikidata associati ai codici per il Template:Software/Linguaggio
* @TODO: Cancellare a fine marzo 2017, salvo rollback, questi non sono più letti.
]]
config.wikidataToLanguageSlug = {
Q154755 = 'ada',
Q343587 = 'action!',
Q234657 = 'actionscript',
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',
Q978185 = 'typescript',
Q1138939 = 'vala',
Q726218 = 'xul'
}
--[[
* Alias da mantenere per ragioni storiche del Template:Software/Linguaggio
* @TODO: Cancellare a fine marzo 2017, salvo rollback, questi non sono più letti.
]]
config.languageSlugAlias = {
['action'] = 'action!',
['c ++'] = 'c++',
['cpp'] = 'c++',
['c sharp'] = 'c#',
['c #'] = 'c#',
['embarcadero delphi'] = 'delphi',
['js'] = 'javascript',
['objective c'] = 'objective-c',
['pgsql'] = 'pl',
['pl-pgsql'] = 'pl',
['pl/pgsql'] = 'pl'
}
return config