Module:egy-hieroglyphs

Hello, you have come here looking for the meaning of the word Module:egy-hieroglyphs. In DICTIOUS you will not only get to know all the dictionary meanings for the word Module:egy-hieroglyphs, but we will also tell you about its etymology, its characteristics and you will know how to say Module:egy-hieroglyphs in singular and plural. Everything you need to know about the word Module:egy-hieroglyphs you have here. The definition of the word Module:egy-hieroglyphs will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModule:egy-hieroglyphs, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.

Used by {{egy-h}} to display hieroglyphs. See there for details.

Data for this module is stored in Module:egy-hieroglyphs/data.


local export = {}

local m_data = mw.loadData("Module:egy-hieroglyphs/data")

local mdc_complex_group_normalization_map = m_data.mdc_complex_group_normalization_map
local mdc_normalization_map = m_data.mdc_normalization_map
local mdc_phonogram_map = m_data.mdc_phonogram_map
local hiero_map = m_data.hiero_map
local mdc_symbol_map = m_data.mdc_symbol_map
local wikihiero_bracket_fix_map = m_data.wikihiero_bracket_fix_map
local wikihiero_word_set = m_data.wikihiero_word_set
local unavailable_glyph_image_height_map = m_data.unavailable_glyph_image_height_map

local lang = require("Module:languages").getByCode("egy")
local trackfn = require("Module:debug").track

function export.remove_comments(input)
	return mw.ustring.gsub(input, '<!%-%-(.-)%-%->', '')
end

function export.mdc_to_unicode(frame)
	local mdc = frame.args
	local unicode = export.remove_comments(mdc)

	unicode = mw.ustring.gsub(unicode, ":%*", ":")
	unicode = mw.ustring.gsub(unicode, "%*%*", "%*")
	unicode = mw.ustring.gsub(unicode, " ", "-")

	unicode = mw.ustring.gsub(unicode, "x&r&t&Y1", "x:r*t:Y1")

	for pat, repl in pairs(mdc_complex_group_normalization_map) do
		unicode = unicode:gsub("%f" .. pat .. "%f", repl)
	end

	for pat, repl in pairs(mdc_normalization_map) do
		unicode = unicode:gsub("%f" .. pat .. "%f", repl)
	end

	unicode = mw.ustring.gsub(unicode, "%f(.-)%f", "<span title=\"%1\">%1</span>")
	unicode = mw.ustring.gsub(unicode, "\"<", "\"&lt;")
	unicode = mw.ustring.gsub(unicode, ">\"", "&gt;\"")

	for pat, repl in pairs(mdc_phonogram_map) do
		unicode = unicode:gsub("\"(+)\">" .. pat .. "<", "\"" .. repl .. " %\">" .. repl .. "<")
	end

	for pat, repl in pairs(hiero_map) do
		unicode = unicode:gsub(">" .. pat .. "<", ">" .. repl .. "<")
	end

	unicode = mw.ustring.gsub(unicode, "%.%.", "𓑁")
	for pat, repl in pairs(mdc_symbol_map) do
		unicode = unicode:gsub(pat, repl)
	end

	unicode = "<span class=\"Egyp\" lang=\"egy\">" .. unicode .. "</span>"

	return unicode
end

function export.mdc_to_wikihiero(frame)
	local mdc = frame.args
	local wikihiero = export.remove_comments(mdc)

	for pat, repl in pairs(wikihiero_bracket_fix_map) do
		wikihiero = wikihiero:gsub(pat, repl)
	end

	for glyph in string.gmatch(wikihiero, "%f%u+%f") do
		if (wikihiero_word_set == nil and mdc_phonogram_map == nil) then
			local glyph_image_height = 93
			if unavailable_glyph_image_height_map ~= nil then
				glyph_image_height = unavailable_glyph_image_height_map
			end
			local glyph_height = math.min(38, math.floor(glyph_image_height * 0.41))
			local glyph_quadrat =
				"<table class=\"mw-hiero-table mw-hiero-outer\" dir=\"ltr\"><tr><td><table class=\"mw-hiero-table\"><tr><td height=\"" ..
				(glyph_height + 2) ..
				"\"><span style=\"margin: 1px;\">[[File:Abydos-Bold-hieroglyph-" ..
				glyph ..
				".png|" ..
				glyph ..
				"|x" ..
				glyph_height ..
				"px|link=|class=skin-invert]]</span></td></tr></table></td></tr></table>" -- not yet supported: mirroring, multi-glyph quadrats
			wikihiero = mw.ustring.gsub(wikihiero, "%f" .. glyph .. "%f",
				frame:preprocess("</hiero>" .. glyph_quadrat .. "<hiero>"))
		end
	end

	wikihiero = mw.ustring.gsub(wikihiero, "%*", "@")
	for unsupported_quadrat in string.gmatch(wikihiero, "~+%f") do
		local quadrat = mw.ustring.gsub(unsupported_quadrat, "~", "")
		quadrat = mw.ustring.gsub(quadrat, ":", "::")
		quadrat = mw.ustring.gsub(quadrat, "@", " ")
		local quadrat_start =
			"<table class=\"mw-hiero-table mw-hiero-outer\" dir=\"ltr\"><tr><td><table class=\"mw-hiero-table\"><tr><td height=\"40\">"
		local quadrat_end = "</td></tr></table></td></tr></table>"

		for glyph in string.gmatch(quadrat, "%f+%f") do
			if (wikihiero_word_set == nil and mdc_phonogram_map == nil) then
				local glyph_image_height = 70
				if unavailable_glyph_image_height_map ~= nil then
					glyph_image_height = unavailable_glyph_image_height_map
				end
				local glyph_height = math.min(29, math.floor(glyph_image_height * 0.41))
				local processed_glyph = "<span style=\"margin: 1px;\">[[File:Abydos-Bold-hieroglyph-" ..
					glyph .. ".png|" .. glyph .. "|x" .. glyph_height .. "px|link=|class=skin-invert]]</span>"
				quadrat = mw.ustring.gsub(quadrat, "%f" .. glyph .. "%f", processed_glyph)
			else
				quadrat = mw.ustring.gsub(quadrat, "%f" .. glyph .. "%f",
					frame:preprocess("<hiero>" .. glyph .. "</hiero>"))
			end
		end

		quadrat = mw.ustring.gsub(quadrat, "::", "<br>")
		quadrat = quadrat_start .. quadrat .. quadrat_end
		wikihiero = mw.ustring.gsub(wikihiero, unsupported_quadrat, frame:preprocess("</hiero>" .. quadrat .. "<hiero>"))
	end
	wikihiero = mw.ustring.gsub(wikihiero, "@", "*")

	wikihiero = mw.ustring.gsub(wikihiero, "!", frame:preprocess("</hiero><br><hiero>"))

	-- Prevents empty hiero tables to be created.
	wikihiero = mw.ustring.gsub("<hiero>" .. wikihiero .. "</hiero>", "<hiero>%-?</hiero>", "")

	return frame:preprocess(wikihiero)
end

function track(page)
	trackfn(lang:getCode() .. "-hieroglyphs/" .. page)
	return true
end

function export.parameter_to_hiero(frame)
	local param = frame.args
	if mw.ustring.find(param, "hiero") or mw.ustring.find(param, "egy%-glyph") then
		-- ]
		track("wikihiero to cleanup")
		return param
	else
		return export.mdc_to_wikihiero(frame)
	end
end

return export