Module:User:Erutuon/labels

local m_labeldata = mw.loadData("Module:User:Erutuon/labels/data") local m_utilities = require("Module:utilities") local m_links = require("Module:links")

local export = {}

local function show_categories(data, lang, script, sort_key, script2, sort_key2, term_mode) local categories = {} local categories2 = {} local lang_code = lang:getCode local canonical_name = lang:getCanonicalName local topical_categories = data.topical_categories or {} local sense_categories = data.sense_categories or {} local pos_categories = data.pos_categories or {} local regional_categories = data.regional_categories or {} local plain_categories = data.plain_categories or {} for i, cat in ipairs(topical_categories) do table.insert(categories, lang_code .. ":" .. cat) if script then table.insert(categories, lang_code .. ":" .. cat .. " in " .. script .. " script") end if script2 then table.insert(categories2, lang_code .. ":" .. cat .. " in " .. script2 .. " script") end end for i, cat in ipairs(sense_categories) do cat = (term_mode and cat .. " terms" ) or "terms with " .. cat .. " senses" table.insert(categories, canonical_name .. " " .. cat) if script then table.insert(categories, canonical_name .. " " .. cat .. " in " .. script .. " script") end if script2 then table.insert(categories2, canonical_name .. " " .. cat .. " in " .. script2 .. " script") end end

for i, cat in ipairs(pos_categories) do table.insert(categories, canonical_name .. " " .. cat) if script then table.insert(categories, canonical_name .. " " .. cat .. " in " .. script .. " script") end if script2 then table.insert(categories2, canonical_name .. " " .. cat .. " in " .. script2 .. " script") end end for i, cat in ipairs(regional_categories) do table.insert(categories, cat .. " " .. canonical_name) if script then table.insert(categories, cat .. " " .. canonical_name .. " in " .. script .. " script") end if script2 then table.insert(categories2, cat .. " " .. canonical_name .. " in " .. script2 .. " script") end end for i, cat in ipairs(plain_categories) do		table.insert(categories, cat) if script then table.insert(categories, cat .. " in " .. script .. " script") end if script2 then table.insert(categories2, cat .. " in " .. script2 .. " script") end end return m_utilities.format_categories(categories, lang, sort_key) .. m_utilities.format_categories(categories2, lang, sort_key2) end

function export.show_labels(labels, lang, script, script2, sort_key, sort_key2, nocat, term_mode) if #labels < 1 then if mw.title.getCurrentTitle.nsText == "Template" then labels = {"example"} else error("You must specify at least one label.") end end -- Show the labels local omit_preComma = false local omit_postComma = true local omit_preSpace = false local omit_postSpace = true local lang_code = lang:getCode local canonical_name = lang:getCanonicalName local alias for i, label in ipairs(labels) do		omit_preComma = omit_postComma omit_postComma = false omit_preSpace = omit_postSpace omit_postSpace = false local deprecated = false if m_labeldata.deprecated[label] then deprecated = true end if m_labeldata.aliases[label] then alias = label label = m_labeldata.aliases[label] end if m_labeldata.deprecated[label] then deprecated = true end local data = m_labeldata.labels[label] or {} -- Language-specific label data if data[lang_code] then data = data[lang_code] end if data.track then require("Module:debug").track("labels/label/" .. label) end local languages = data.languages if languages and not languages[lang_code] then -- Special:WhatLinksHere/Wiktionary:Tracking/labels/incorrect-language require("Module:debug").track("labels/incorrect-language") mw.log(lang_code .. ":" .. label) --	Do not use the data in the table if the current language					is not in the "languages" list. label = alias or label data = {} end if data.special_display then local function add_language_name(str) if str == "canonical_name" then return canonical_name else return "" end end label = mw.ustring.gsub(data.special_display, "<([^>]+)>", add_language_name) else if data.glossary then local glossary_entry = type(data.glossary) == "string" and data.glossary or label label = "" .. label .. "" elseif data.Wikipedia then Wikipedia_entry = type(data.Wikipedia) == "string" and data.Wikipedia or label label = "" .. label .. "" else label = data.display or label end end local omit_comma = omit_preComma or data.omit_preComma omit_postComma = data.omit_postComma local omit_space = omit_preSpace or data.omit_preSpace omit_postSpace = data.omit_postSpace if deprecated then label = ' ' .. label .. ' '			if not nocat then label = label .. m_utilities.format_categories({ "Entries with deprecated labels" }, lang) end end label = (omit_comma and "" or ', ') .. (omit_space and "" or "&#32;") .. label labels[i] = label .. (nocat and "" or show_categories(data, lang, script, sort_key, script2, sort_key2, term_mode)) end return "( " ..		table.concat(labels, "") ..		" ) " end

function export.printConflicts(frame) local replacements = m_labeldata.replacements local output = {"; labels:"} local labels = {} for label, data in pairs(replacements.labels) do		local lang if data.languages then langCode = data.languages[1] lang = require("Module:languages").getByCode(langCode) end local canonicalName if lang then canonicalName = lang.getCanonicalName end table.insert(labels, label) if langCode or canonicalName then table.insert(output, " (")		end		if langCode then			table.insert(output, " ")		end		if canonicalName then			if langCode then				table.insert(output, ", ")			end			table.insert(output, canonicalName)		end		if langCode or canonicalName then			table.insert(output, ")") end end table.sort(labels) for _, label in ipairs(labels) do table.insert(output, "\n* " .. label) end return table.concat(output) end

return export