Module:User:Rua/langspan

From Wiktionary, the free dictionary
Jump to navigation Jump to search

This is a private module sandbox of Rua, for her own experimentation. Items in this module may be added and removed at Rua's discretion; do not rely on this module's stability.


local export = {}

local LangSpan = {}
LangSpan.__index = LangSpan


function export.new(text, lang, face, sc, tr)
	self = setmetatable({ _text = text, _lang = lang, _face = face, _sc = sc, _tr = tr }, LangSpan)
	
	-- Detect script
	if not self._sc then
		self._sc = require("Module:scripts").findBestScript(self._text, self._lang)
	end
	
	return self
end

-- Wrap text in the appropriate HTML tags with language and script class.
function LangSpan:show()
	-- Add a script wrapper
	if self._face == nil then
		return '<span class="' .. self._sc:getCode() .. '" lang="' .. self._lang:getCode() .. '">' .. self._text .. '</span>'
	elseif self._face == "term" then
		return '<i class="' .. self._sc:getCode() .. ' mention" lang="' .. self._lang:getCode() .. '">' .. self._text .. '</i>'
	elseif self._face == "head" then
		return '<strong class="' .. self._sc:getCode() .. ' headword" lang="' .. self._lang:getCode() .. '">' .. self._text .. '</strong>'
	elseif self._face == "bold" then
		return '<b class="' .. self._sc:getCode() .. '" lang="' .. self._lang:getCode() .. '">' .. self._text .. '</b>'
	else
		error("Invalid script face \"" .. self._face .. "\".")
	end
end


function LangSpan:getScript()
	return self._sc
end


return export