Module:TopCategories
From Pharmacopedia
More actions
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