Module:utilities/format categories with sort keys

local data = mw.loadData("Module:utilities/format_categories/data")

-- Format the categories with the appropriate sort key, which may be specified individually per category. CATEGORIES is a list of objects as follows: {	category = "Category name",	sort_key = "Sort key" or nil } The individual sort_key values are treated as individual SORT_KEY values for only that specific category. -- Otherwise this function behaves like format_categories in Module:utilities. return function(categories, lang, sort_key, sort_base, force_output, sc) if type(lang) == "table" and not lang.getCode then error("The second argument to format_categories_with_sort_keys should be a language object.") end

local title_obj = mw.title.getCurrentTitle

if force_output or data.allowedNamespaces[title_obj.nsText] or data.allowedPrefixedPages[title_obj.prefixedText] then local PAGENAME = mw.loadData("Module:headword/data").pagename if not lang then lang = require("Module:languages").getByCode("und") end -- Generate a default sort key sort_base = lang:makeSortKey(sort_base or PAGENAME, sc) if not sort_key or sort_key == "" then sort_key = sort_base end -- If the sortkey is empty, remove it. if sort_key == "" then sort_key = nil end local out_categories = {} for key, cat in ipairs(categories) do			local individual_sort_key = cat.sort_key or sort_key if individual_sort_key == "" then individual_sort_key = " " end out_categories[key] = "" end return table.concat(out_categories, "") else return "" end end