Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Documentation for this module may be created at Module:TopCategories/doc

local p = {}

local categories = {
	'Addiction Medicine', 'Amphetamines', 'Anesthetics', 'Anti-Dementia Medicines',
	'Anticonvulsants / Antiepileptics', 'Antidepressants', 'Antihistamines',
	'Antiparkinsonian Medicines', 'Antipsychotics / Neuroleptics',
	'Anxiolytics & Sedative-Hypnotics', 'Arylcyclohexylamines', 'Barbiturates',
	'Benzodiazepines', 'Cannabinoids', 'Cathinones',
	'Classical Psychedelics (Serotonergic)', 'Deliriants', 'Dissociatives',
	'Empathogens / Entactogens', 'Ergotamines',
	'Eugeroics (Wakefulness-Promoting Agents)', 'GABAergics', 'Local Anesthetics',
	'Lysergamides', 'Methylphenidates (Phenidates)', 'Migraine Medicines',
	'Monoamine Oxidase Inhibitors (MAOIs)', 'Mood Stabilizers',
	'Muscle Relaxants (CNS-acting)', 'NBOMe / NBOH series', 'Natural opioids',
	'Nootropics', 'Opioid Antagonists', 'Opioids', 'Orexin Receptor Antagonists',
	'Phenethylamines', 'Psychedelics', 'Pyrrolidinophenones',
	'Research Materials', 'Second-Generation Antipsychotics (SGAs / Atypicals)',
	'Selective Serotonin Reuptake Inhibitors (SSRIs)', 'Semisynthetic opioids',
	'Serotonin–Norepinephrine Reuptake Inhibitors (SNRIs)',
	'Stimulants & Wake-Promoting Agents', 'Synthetic opioids',
	'Tricyclic Antidepressants (TCAs)', 'Triptans (5-HT1B/1D Agonists)',
	'Tryptamines', 'Xanthines', 'Z-Drugs (Non-Benzodiazepine Hypnotics)',
}

function p.list(frame)
	local counts = {}
	for _, cat in ipairs(categories) do
		local n = mw.site.stats.pagesInCategory(cat, 'pages')
		if n > 0 then
			table.insert(counts, {name = cat, count = n})
		end
	end
	-- Sort descending by count to pick top 10
	table.sort(counts, function(a, b) return a.count > b.count end)
	local top10 = {}
	for i = 1, math.min(10, #counts) do
		table.insert(top10, counts[i])
	end
	-- Re-sort top 10 alphabetically
	table.sort(top10, function(a, b) return a.name < b.name end)
	local lines = {}
	for _, item in ipairs(top10) do
		table.insert(lines, '* [[:Category:' .. item.name .. '|' .. item.name .. ']]')
	end
	return table.concat(lines, '\n')
end

return p