Permanently protected module
From Wikipedia, the free encyclopedia


-------------------------------------------------------------------------------

-- Category class

-- This module makes a Category class for use in [[Module:Article history]].

-- It provides a unified interface for the creation of category links. With

-- this class, categories can passed between objects without concerns about

-- interoperability and still have their values and sort keys easily

-- accessible.

-------------------------------------------------------------------------------



local checkType = require('libraryUtil').checkType

local CATEGORY_NS_TEXT = mw.site.namespaces14].name



local Category = {}

Category.__index = Category



function Category.new(category, sortKey)

	checkType('Category.new', 1, category, 'string')

	checkType('Category.new', 2, sortKey, 'string', true)

	local obj = setmetatable({}, Category)

	obj.category = category

	obj.sortKey = sortKey

	return obj

end



function Category:__tostring()

	if self.sortKey then

		return string.format(

			'[[%s:%s|%s]]',

			CATEGORY_NS_TEXT,

			self.category,

			self.sortKey

		)

	else

		return string.format(

			'[[%s:%s]]',

			CATEGORY_NS_TEXT,

			self.category

		)

	end

end



return Category