Module:cognates

Revision as of 22:05, 6 August 2024 by TheNightAvl (talk | contribs)

Underlies {{cognates}}.


local export = {}
local getArgs = require('Module:Arguments').getArgs

local m_inline = require("Module:inline")
local m_languages = require("Module:languages")
local m_links = require("Module:links")

function export.show(frame)
	local args = getArgs(frame)
	local links = {}
	local nat = m_languages.find_by_code(args[1] or "") ~= nil and m_languages.get_by_code(args[1])
	local params = {
		nocap = false,
	}
	
	for lang, entry in pairs(args) do
		if type(lang) == "string" then
			if m_languages.find_by_code(lang) then
				local term, data = m_inline.parse(entry)
				local cat = ""
				lang = m_languages.get_by_code(lang)
				data["language"] = lang
				data["term"] = term
				data["showlanguage"] = true
				local link = m_links.full_link(data, "term")
				if nat then
					link = link .. "[[Category:" .. nat.name .. " terms with " .. lang.name .. " cognates]]"
				end
				table.insert(links, link)
			elseif params[lang] ~= nil then --check for parameters
				params[lang] = true
			end
		end
	end
	
	local text = ((params.nocap and "c") or "C") .. "ognate with "
	
	for i, link in ipairs(links) do
		if i > 1 then
			if links[i + 1] then
				text = text .. ", "
			else
				text = text .. " and "	
			end
		end
		text = text .. link	
	end
	
	return text
end

return export

--[[
Debug console test string:
=p.show(mw.getCurrentFrame():newChild{title="whatever",args={["rad"]="vas", ["lfv"] = "vat"}})
]]