Module:Sandbox/Erutuon/Glossing abbreviations

From blackwiki
< Module:Sandbox‎ | Erutuon
Revision as of 04:45, 1 April 2019 by blackwiki>Primefac (Primefac moved page Module:Sandbox/Uanfala/Glossing abbreviations to Module:Sandbox/Erutuon/Glossing abbreviations without leaving a redirect: per reasonable comment on talk page)
Jump to navigation Jump to search

This was an early module designed to format and expand glossing abbreviations. It was used by an earlier version of Template:Gloss-abbr. It has been superseded by Template:gcl (which uses Module:Interlinear).


local p = {}

local data = {
	["1s"] = "first person singular",
	["2s"] = "second person singular",
	["3s"] = "third person plural",
	["1p"] = "first person plural",
	["2p"] = "second person plural",
	["3p"] = "third person plural",
	["ind"] = "indicative mood",
	["sjv"] = "subjunctive mood",
	["part"] = "participle",
	["imp"] = "imperative",
	["nom"] = "nominative case",
	["acc"] = "accusative case",
	["gen"] = "genitive case",
	["dat"] = "dative case",
	["def"] = "definite",
	["ndef"] = "indefinite",
	["sg"] = "singular number",
	["du"] = "dual number",
	["pl"] = "plural number",
}

data["sbjv"] = data["sjv"]
data["indef"] = data["ndef"]
 -- non-standard
data["indic"] = data["ind"]
data["1sg"] = data["1s"]
data["2sg"] = data["2s"]
data["3sg"] = data["3s"]
data["1pl"] = data["1p"]
data["2pl"] = data["2p"]
data["3pl"] = data["3p"]

function p.abbr(frame)
	local args = frame:getParent().args[1] and frame:getParent().args or frame.args
	local abbreviation = args[1] or error("Provide an abbreviation in parameter 1")
	
	local key = string.gsub(abbreviation, "%.$", "")
	key = string.lower(key)
	
	local expanded = data[key] or error("The abbreviation "..(abbreviation or "nil").." is not recognized")
	
	local _, count = mw.ustring.gsub(abbreviation, "%u", "")
	if count > #abbreviation * 3/4 then
		return '<abbr class="smallcaps" style="font-variant: small-caps; text-transform: lowercase;" title="'..expanded..'">'..abbreviation..'</abbr>'
	else
		return '<abbr title="'..expanded..'">'..abbreviation..'</abbr>'
	end
end

return p