Module:links: Difference between revisions

From Laenkea
Jump to navigation Jump to search
m (Changed “” to ‘’ for glosses)
Tag: Reverted
No edit summary
 
(11 intermediate revisions by the same user not shown)
Line 7: Line 7:
local link = data.term
local link = data.term
local alt = data.alt or data.term
local alt = data.alt or data.term
local anchor = data.anchor
if data.language and data.language.proto then
local plaenk_alt = mw.loadData("Module:lnk-pro-morph/data").alt
alt = "*" .. alt
link = "Appendix:" .. data.language.name .. "/" .. data.term
if data.language then
elseif data.language then
link = link .. "#" .. string.gsub(data.language.name, " ", "_")
if data.language.code == "lnk-pro" and plaenk_alt[link] then link = plaenk_alt[link] end
if data.hypo then alt = "**" .. alt end
if data.language.proto then
if not data.nostar and not data.hypo then alt = "*" .. alt end -- * is an asterisk but sometimes the asterisk gets mistaken for wiki formatting
link = "Appendix:" .. data.language.name .. "/" .. data.term
if anchor then link = link .. "#" .. data.language.name .. anchor end
else
local jump = data.language.name
if anchor then jump = data.language.name .. anchor end
link = link .. "#" .. string.gsub(jump, " ", "_")
end
end
end
local term = mw.ustring.match(mw.ustring.gsub(link, " ", " "),"([^%#]+)")
local term = mw.ustring.match(mw.ustring.gsub(link, " ", " "),"([^%#]+)")
if term == mw.title.getCurrentTitle().prefixedText and not data.nobold then
if term == mw.title.getCurrentTitle().text and not data.nobold then
return "<b>" .. alt .. "</b>"
return "<b>" .. alt .. "</b>"
elseif mw.ustring.match(term, "^[%?%-–—]+$") or mw.ustring.match(term, ":[%?%-–—]+$") then
elseif mw.ustring.match(term, "^[%?%-–—]+$") or mw.ustring.match(term, ":[%?%-–—]+$") or data.nolink then
return alt
return alt
else
else
return "[[" .. link .. "|" .. alt .. "]]"
return "[[" .. link .. "|" .. alt .. "]]"
end
end
Line 29: Line 43:
if not (data.pos or data.gloss) then return nil end
if not (data.pos or data.gloss) then return nil end
local out = {}
local out = {}
if data.gloss then table.insert(out, '' .. data.gloss .. '') end
if data.gloss then table.insert(out, '' .. data.gloss .. '') end
if data.pos then table.insert(out, data.pos) end
if data.pos then table.insert(out, data.pos) end
return table.concat(out, ", ")
return table.concat(out, ", ")

Latest revision as of 16:04, 31 May 2024

Documentation for this module may be created at Module:links/documentation

local export = {}

function export.language_link(data)
	if not data.term then
		error("language link data must contain term")
	end
	local link = data.term
	local alt = data.alt or data.term
	local anchor = data.anchor
	
	local plaenk_alt = mw.loadData("Module:lnk-pro-morph/data").alt
	
	if data.language then
	
		if data.language.code == "lnk-pro" and plaenk_alt[link] then link = plaenk_alt[link] end
		
		if data.hypo then alt = "&#42;&#42;" .. alt end
		
		if data.language.proto then
			if not data.nostar and not data.hypo then alt = "&#42;" .. alt end -- &#42; is an asterisk but sometimes the asterisk gets mistaken for wiki formatting
			link = "Appendix:" .. data.language.name .. "/" .. data.term
			if anchor then link = link .. "#" .. data.language.name .. anchor end
		else
			local jump = data.language.name
			if anchor then jump = data.language.name .. anchor end
			link = link .. "#" .. string.gsub(jump, " ", "_")
		end
		
	end
	
	local term = mw.ustring.match(mw.ustring.gsub(link, "&nbsp;", " "),"([^%#]+)")
	
	if term == mw.title.getCurrentTitle().text and not data.nobold then
		return "<b>" .. alt .. "</b>"
	elseif mw.ustring.match(term, "^[%?%-–—]+$") or mw.ustring.match(term, ":[%?%-–—]+$") or data.nolink then
		return alt
	else
		return "[[" .. link .. "|" .. alt .. "]]"
	end
end

function export.link_extras(data)
	if not (data.pos or data.gloss) then return nil end
	local out = {}
	if data.gloss then table.insert(out, '“' .. data.gloss .. '”') end
	if data.pos then table.insert(out, data.pos) end
	return table.concat(out, ", ")
end

function export.full_link(data, face)
	local link = export.language_link(data)
	link = require("Module:formatting").wrap_face(link, data.language, face or "nil")
	local extras = export.link_extras(data)
	if extras then
		extras = " (" .. extras .. ")"
	end
	local prefix
	if data.language and data.showlanguage then
		prefix = "[[" .. data.language.link .. "|" .. data.language.name .. "]] "
	end
	return (prefix or "") .. link .. (extras or "")
end

return export