Modulo:Software/Configurazione/sandbox

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',
	['delphi']        = ',Q487378',
	['embarcadero delphi']
	                  = 'Q487378',
	['erlang']        = 'Q334879',
	['fortran']       = 'Q83303',
	['go']            = 'Q37227',
	['groovy']        = 'Q504453',
	['haskell']       = 'Q34010',
	['html']          = 'Q8811',
	['html5']         = 'Q2053',
	['java']          = 'Q251',
	['javascript']    = 'Q2005',
	['js']            = 'Q2005',
	['lisp']          = 'Q132874',
	['lua']           = 'Q207316',
	['objective-c']   = 'Q188531',
	['objective c']   = 'Q188531',
	['object pascal'] = 'Q633894',
	['pascal']        = 'Q81571',
	['php']           = 'Q59',
	['python']        = 'Q28865',
	['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',
	['vala']          = 'Q1138939',
	['visual basic']  = 'Q2378',
	['web']           = 'Q1141484',
	['xul']           = 'Q726218'
}

--[[
* 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 (%s) di "Categoria:Software in %s"
* @param free true|nil Ha la categoria per software libero?
* @param nonfree true|nil Ha la categoria per software proprietà?
* @param catf string|nil Categoria da mandare a sprintf
]]
local langcat = function(cat, free, nonfree)
	return {
		cat     = cat,
		free    = free,
		nonfree = nonfree
	}
end

config.language = {
	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('CSS'                      ),
	Q487378   = langcat('Delphi',        true      ),
	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      ),
	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'                 ),
	Q28865    = langcat('Python',        true      ),
	Q961543   = langcat('QML'                      ),
	Q161053   = langcat('Ruby'                     ),
	Q460584   = langcat('Scala'                    ),
	Q187560   = langcat('Scheme'                   ),
	Q17118377 = langcat('Swift'                    ),
	Q5301     = langcat('TeX'                      ),
	Q5288     = langcat('Tcl'                      ),
	Q726218   = langcat('XUL'                      ),
	Q1138939  = langcat('Vala'                     ),
	Q2378     = langcat('Visual Basic'             ),
	Q1141484  = langcat('WEB'                      ),

--	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',
	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
}

--[[
* Categoria:Software $1
* Specificare le licenze che hanno una categorizzazione abbreviata.
]]
config.licenseCategoryShorter = {
	Q178285 = 1 -- freeware
}

--[[
* Per dare un po' di robustezza a questa configurazione su lungo termine.
*
* Per disabilitare la categoria impostare `cat` a false.
*
* @param cat string|false Categoria e.g. "Elaboratori di formule"
* @param free bool|nil Ha la categoria per software libero?
* @param nonfree bool|nil Ha la categoria per software proprietà?
* @param catf string|nil Categoria più generica rispetto alla presupposta "Elaboratori di formule %s"
* @param sing bool|nil La categoria assume "libero" o "proprietario", invece che "liberi" o "proprietari"
* @param m bool|nil Genere maschile? Disabilitare per avere "libere" "proprietarie" invece che "liberi" o "proprietari"
]]
local genrecat = function(cat, free, nonfree, generic, catf, sing, m)
	return {
		cat      = cat,
		free     = free     == nil and true or free,
		nonfree  = nonfree  == nil and true or nonfree,
		catf     = catf,
		sing     = sing,
		m        = m        == nil and true or m
	}
end

config.genre = {}
config.genre.cat = {
	Q1200186   = genrecat('Software di accesso remoto'), -- remote desktop software
	Q498267    = genrecat('Aggregatori di notizie'),
	Q29051918  = genrecat('Ambienti di sviluppo di videogiochi'),
	Q193564    = genrecat('Motori grafici'), -- game engine
	missing    = genrecat('Software per l\'analisi dei dati'),
	missing    = genrecat('Software per l\'analisi numerica'),
	missing    = genrecat('Antispyware'),
	Q93249     = genrecat('Antivirus'),
	Q877886    = genrecat('Archiviatori di file'), -- file archiver
	Q2727468   = genrecat('Software per l\'automazione dello sviluppo'), -- automazione dello sviluppo
	Q194274    = genrecat('Software di backup'), -- backup
	Q8513      = genrecat('Software per basi di dati',                    nil, nil,    'Software %s per basi di dati'     ), -- database
	Q128570    = genrecat('Software per la bioinformatica',               nil, false                                      ), -- bioinformatic
	Q226264    = genrecat('BIOS',                                         nil, false),
	Q836795    = genrecat('Boot loader'),
	Q507703    = genrecat('Chatterbot',                                   nil, false                                      ), -- IRC bot
	Q6368      = genrecat('Browser'),
	Q26203752  = genrecat('Calcolatrici',                                 nil, nil,    nil,                          false),
	Q180634    = genrecat('Software di calcolo distribuito'), -- calcolo distribuito
	Q870780    = genrecat('Chatterbot',                                   nil, false),
	Q29156727  = genrecat('Software per la chimica',                      nil, false), -- cheminformatic software
	Q21577192  = genrecat('Client BitTorrent'),
	Q570871    = genrecat('Client di posta elettronica'),
	Q1254596   = genrecat('Software per il cloud computing'), -- software as a service
	Q47506     = genrecat('Compilatori'),
	Q15614008  = genrecat('Software per la composizione tipografica'), -- typographic software
	Q29157559  = genrecat('Software per la compressione dei dati'), -- compression software
	Q1050567   = genrecat('Software CAE'), -- computer-aided engineering
	Q1043936   = genrecat('Software CAPP'), -- computer-aided process planning
	Q660192    = genrecat('Software CAM'), -- computer-aided manufacturing
	Q150971    = genrecat('Software per computer grafica'), -- computer graphic
	Q189177    = genrecat('Software per computer grafica 3D'), -- 3D computer graphics
	Q751436    = genrecat('Software per la comunicazione tra processi',    nil, false), -- inter-process communication
	Q131093    = genrecat('Content management system'),
	Q3257930   = genrecat('Software di controllo versione',                nil, false),
	Q5375622   = genrecat('Software per la crittografia'),
	Q485643    = genrecat('Software per il customer relationship management'),
	Q176165    = genrecat('Database management system'),
	Q193231    = genrecat('Debugger'),
	Q205020    = genrecat('Desktop environment'),
	Q29364197  = genrecat('Software per desktop publishing'),
	Q1138815   = genrecat('Desktop search'),
	Q1060750   = genrecat('Software per il montaggio audio'),
	Q831677    = genrecat('Document management system',                    nil, false),
	Q131212    = genrecat('Editor di testo'),
	Q726761    = genrecat('Editor HTML'),
	Q1074158   = genrecat('Software per l\'educazione'), -- e-learning
	Q1153173   = genrecat('Software per l\'educazione'), -- edutainment
}

config.genre.alias = {}
config.genre.alias.slug = {
	['accesso remoto'] = 'Q1200186',
	['aggregatore']            = 'Q498267',
	['aggregatore di notizie'] = 'Q498267',
	['sviluppo videogiochi']                = 'Q29051918',
	['ambiente di sviluppo videogiochi']    = 'Q29051918',
	['ambiente di sviluppo di videogiochi'] = 'Q29051918',
	['analisi dati']     = nil,
	['analisi dei dati'] = nil,
	['analisi numerica'] = nil,
	['calcolo numerico'] = nil,
	['antispyware'] = nil,
	['antivirus'] = 'Q93249',
	['archiviazione']        = 'Q877886',
	['archiviatore']         = 'Q877886',
	['archiviatore di file'] = 'Q877886',
	['automazione dello sviluppo'] = 'Q2727468',
	['backup'] = 'Q194274',
	['base dati']    = 'Q8513',
	['base di dati'] = 'Q8513',
	['basi di dati'] = 'Q8513',
	['database']     = 'Q8513',
	['bioinformatica'] = 'Q128570',
	['bios'] = 'Q226264',
	['boot loader'] = 'Q836795',
	['bot irc'] = 'Q507703',
	['browser'] = 'Q6368',
	['cad'] = 'Q26203752',
	['calcolatrice'] = 'Q7554269',
	['calcolo distribuito'] = 'Q180634',
	['chatterbot'] = 'Q870780',
	['chemioinformatica'] = 'Q29156727',
	['chimica']           = 'Q29156727',
	['client di bittorrent'] = 'Q21577192',
	['client bittorrent']    = 'Q21577192',
	['posta elettronica'] = 'Q570871',
	['client di posta']   = 'Q570871',
	['cloud computing'] = 'Q1254596',
	['compilatore'] = 'Q47506',
	['composizione tipografica'] = 'Q15614008',
	['compressione dei dati'] = 'Q29157559',
	['compressione file']     = 'Q29157559',
	['archiviazione file']    = 'Q29157559',
	['computer-aided engineering'] = 'Q1050567',
	['cae'] =                        'Q1050567',
	['computer-aided process planning'] = 'Q1043936',
	['capp']                            = 'Q1043936',
	['computer-aided manufacturing'] = 'Q660192',
	['cam']                          = 'Q660192',
	['computer grafica'] = 'Q150971',
	['computer grafica 3d'] = 'Q189177',
	['comunicazione tra processi'] = 'Q751436',
	['content management system'] = 'Q131093',
	['cms']                       = 'Q131093',
	['sistema di controllo versione'] = 'Q3257930',
	['controllo versione']            = 'Q3257930',
	['revision control']              = 'Q3257930',
	['crittografia'] = 'Q5375622',
	['customer relationship management'] = 'Q485643',
	['crm']                              = 'Q485643',
	['database management system'] = 'Q176165',
	['dbms']                       = 'Q176165',
	['debugger'] = 'Q193231',
	['desktop environment'] = 'Q205020',
	['ambiente desktop']    = 'Q205020',
	['desktop publishing'] = 'Q29364197',
	['dpt']                = 'Q29364197',
	['desktop search'] = 'Q1138815',
	['digital audio workstation'] = 'Q1060750',
	['daw']                       = 'Q1060750',
	['document management system'] = 'Q831677',
	['dbms']                       = 'Q831677',
	['editor di testo'] = 'Q131212',
	['editor']          = 'Q131212',
	['editor html'] = 'Q726761',
	['editor web']  = 'Q726761',
	['educazione']    = 'Q1074158',
	['apprendimento'] = 'Q1074158',
	['e-learning']    = 'Q1074158',
	['edutainment'] = 'Q1153173'
}

config.genre.alias.wd = {
	Q1200186 = 'Q607297', -- remote desktop = remote desktop software
	Q184793 = 'Q26203752', -- computer-aided design = computer-aided design software
	Q15614005 = 'Q15614008' -- typesetting software = typographic software
}

return config