Module:labels/analysis

From Linguifex
Jump to navigation Jump to search


local export = {}

function export.printConflicts(frame)
	local m_labeldata = mw.loadData("Module:labels/data")
	
	local replacements = m_labeldata.replacements
	
	local output = {"; labels:"}
	
	local labels = {}
	
	for label, data in pairs(replacements.labels) do
		local lang, langCode
		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, "<code>" .. langCode .. "</code>")
		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

function export.printUnused(frame)
	local withoutLanguage = require("Module:array")()
	for label, data in pairs(require("Module:labels/data/subvarieties").labels) do
		if not data.language then
			table.insert(withoutLanguage, label)
		end
	end
	return withoutLanguage
		:map(
			function(label)
				return "* <code>" .. label .. "</code>"
			end)
		:concat("\n")
end

return export