Modul:ferhengok/bêziman

Ji Wîkîferhengê

Documentation for this module may be created at Modul:ferhengok/bêziman/belge

local m_labeldata = mw.loadData("Modul:ferhengok/dane")
local m_utilities = require("Module:utilities")
local m_links = require("Module:links")
local b = require("Modul:bingeh")
local export = {}

function export.get_label_info(label, lang, already_seen, script, script2, sort_key, sort_key2, nocat, term_mode)
	local ret = {}
	local deprecated = false
	local alias
	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 {}
	
	if data.track then
		require("Module:debug").track("labels/label/" .. label)
	end

	if data.special_display then
		local function add_language_name(str)
			if str == "canonical_name" then
				return lang:getCanonicalName()
			else
				return ""
			end
		end
		
		label = mw.ustring.gsub(data.special_display, "<([^>]+)>", add_language_name)
	else
		--[[
			If data.glossary or data.Wikipedia are set to true, there is a glossary definition
			with an anchor identical to the label, or a Wikipedia article with a title
			identical to the label.
				For example, the code
					labels["formal"] = {
						glossary = true,
					}
				indicates that there is a glossary entry for "formal".
				
			
			Otherwise, data.glossary and data.Wikipedia specify the title or the anchor.
		]]
		if data.glossary then
			local glossary_entry = type(data.glossary) == "string" and data.glossary or label
			label = "[[Nimînok:Ferhengok#" .. glossary_entry .. "|" .. ( data.display or label ) .. "]]"
		elseif data.Wikipedia then
			Wikipedia_entry = type(data.Wikipedia) == "string" and data.Wikipedia or label
			label = "[[w:" .. Wikipedia_entry .. "|" .. ( data.display or label ) .. "]]"
		else
			label = data.display or label
		end
	end
	
	if deprecated then
		label = '<span class="deprecated-label">' .. label .. '</span>'
	end
	
	local label_for_already_seen =
		label
		or nil
	
	-- Track label text. If label text was previously used, don't show it,
	-- but include the categories.
	-- For an example, see [[hypocretin]].
	if already_seen[label_for_already_seen] then
		ret.label = ""
	else
		ret.label = label
	end

	ret.data = data

	if label_for_already_seen then
		already_seen[label_for_already_seen] = true
	end

	return ret
end
	

function export.show_labels(labels, lang, script, script2, sort_key, sort_key2, nocat, term_mode)
	if not labels[1] then
		if mw.title.getCurrentTitle().nsText == "Şablon" then
			labels = {"mînak"}
		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 already_seen = {}
	
	for i, label in ipairs(labels) do
		omit_preComma = omit_postComma
		omit_postComma = false
		omit_preSpace = omit_postSpace
		omit_postSpace = false

		local ret = export.get_label_info(label, lang, already_seen, script, script2, sort_key, sort_key2, nocat, term_mode)
		
		local omit_comma = omit_preComma or ret.data.omit_preComma
		omit_postComma = ret.data.omit_postComma
		local omit_space = omit_preSpace or ret.data.omit_preSpace
		omit_postSpace = ret.data.omit_postSpace
		
		if ret.label == "" then
			label = ""
		else
			label = (omit_comma and "" or '<span class="ib-comma">,</span>') ..
					(omit_space and "" or "&#32;") ..
					ret.label
		end
		labels[i] = label
	end
	
	return
		"<i><span class=\"ib-brac\">(</span><span class=\"ib-content\">"
		.. table.concat(labels, "")
		.. "</span><span class=\"ib-brac\">)</span></i>"
end

return export