Module:Similar categories

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

require("strict");
local tablesModule = require('Module:Tables')
local listModule = require('Module:List')
local cargo = mw.ext.cargo
local getArgs = require('Module:Arguments').getArgs


local p = {}

function p.similar_categories(frame)
	local pagename = mw.title.getCurrentTitle().text
	local class
	
	if  string.find(pagename, "[Rr]oller coasters") ~= nil then
		class = "[Rr]oller coaster"
	elseif  string.find(pagename, "[Pp]owered coasters") ~= nil then
		class = "[Pp]owered coaster"
	elseif  string.find(pagename, "[Aa]lpine coasters") ~= nil then
		class = "[Aa]lpine coaster"
	elseif  string.find(pagename, "[Rr]ides") ~= nil then
		class = "[Rr]ide"
	elseif  string.find(pagename, "[Ww]ater slides") ~= nil then
		class = "[Ww]ater slide"
	elseif  string.find(pagename, "[Aa]musement parks") ~= nil then
		class = "[Aa]musement park"
	end
	
	local cat_name
	local output_list = {}
	if class == nil then
		error("No class detected in category title - this template can't do anything.")
	else
	cat_name = string.gsub(pagename, class, "alpine coaster")
	output_list[1] = "[[:Category:" .. cat_name .. "|Alpine]] (" .. mw.site.stats.pagesInCategory( cat_name, "all" ) .. ")"
	cat_name = string.gsub(pagename, class, "powered coaster")
	output_list[2] = "[[:Category:" .. cat_name .. "|Powered]] (" .. mw.site.stats.pagesInCategory( cat_name, "all" ) .. ")"
	cat_name = string.gsub(pagename, class, "roller coaster")
	output_list[3] = "[[:Category:" .. cat_name .. "|Roller]] (" .. mw.site.stats.pagesInCategory( cat_name, "all" ) .. ")"
	cat_name = string.gsub(pagename, class, "water slide")
	output_list[4] = "[[:Category:" .. cat_name .. "|Water slide]] (" .. mw.site.stats.pagesInCategory( cat_name, "all" ) .. ")"
	cat_name = string.gsub(pagename, class, "ride")
	output_list[5] = "[[:Category:" .. cat_name .. "|Other attractions]] (" .. mw.site.stats.pagesInCategory( cat_name, "all" ) .. ")"
	cat_name = string.gsub(pagename, class, "amusement park")
	output_list[6] = "[[:Category:" .. cat_name .. "|Parks]] (" .. mw.site.stats.pagesInCategory( cat_name, "all" ) .. ")"

	end
	return listModule.horizontal(output_list)
end

return p