Questa pagina è semiprotetta. Può essere modificata solo da utenti registrati

Modulo:Software/Configurazione

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

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


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