Modul:etimologiya

Vikilug‘atdan olingan

local export = {}

function export.format_etyl(tili, source, sort_key) local info

if source:getCode() == "va" then info = { display = "undetermined", cat_name = "other languages"} elseif source:getType() == "etymology language" then info = { display = "" .. source:getCanonicalName() .. "", cat_name = source:getCanonicalName()} elseif source:getType() == "family" then info = { display = "" .. source:getCanonicalName() .. "", cat_name = source:getCategoryName()} else info = { display = "" .. source:getCanonicalName() .. "", cat_name = source:getCanonicalName()} end

-- Add the categories, but only if there is a current language local categories = ""

if tili then local m_utilities = require("Module:utilities")

categories = {}

if tili:getCode() == source:getCode() then categories = m_utilities.format_categories({tili:getCanonicalName() .. " twice-borrowed terms"}, tili, sort_key) else categories = m_utilities.format_categories({tili:getCanonicalName() .. " terms derived from " .. info.cat_name}, tili, sort_key) end end

return "" .. info.display .. categories .. "" end

function export.format_derived(tili, sc, source, term, alt, id, annotations, sort_key) local linktarget = source

if source:getType() == "etymology language" then linktarget = require("Module:tili").getByCode(source:getParentCode()) end

local link = ""

if term or alt or id or annotations.tr or annotations.gloss or annotations.pos or annotations.lit then link = " " .. require("Module:links").full_link(term, alt, linktarget, sc, "term", id, annotations, true) end

return export.format_etyl(tili, source, sort_key) .. link end

function export.format_inherited(tili, sc, source, term, alt, id, annotations, sort_key) local linktarget = source

if source:getType() == "etymology language" then linktarget = require("Module:tili").getByCode(source:getParentCode()) end

if not tili:hasAncestor(linktarget) and mw.title.getCurrentTitle().nsText ~= "Andoza" then error(source:getCanonicalName() .. " is not an ancestor of " .. tili:getCanonicalName() .. ".") end

local link = ""

if term or alt or id or annotations.tr or annotations.gloss or annotations.pos or annotations.lit then link = " " .. require("Module:links").full_link(term, alt, linktarget, sc, "term", id, annotations, true) end

local categories = require("Module:utilities").format_categories({tili:getCanonicalName() .. " terms inherited from " .. source:getCanonicalName()}, tili, sort_key)

return export.format_etyl(nil, source, sort_key) .. link .. categories end

function export.format_borrowed(tili, sc, source, term, alt, id, annotations, sort_key, nocap, notext, learned) local linktarget = source

if source:getType() == "etymology language" then linktarget = require("Module:tili").getByCode(source:getParentCode()) end

local text = ""

if learned then text = "" .. (nocap and "l" or "L") .. "earned borrowing from " else text = "" .. (nocap and "b" or "B") .. "orrowing from " end

local link = ""

if term or alt or id or annotations.tr or annotations.gloss or annotations.pos or annotations.lit then link = " " .. require("Module:links").full_link(term, alt, linktarget, sc, "term", id, annotations, true) end

local categories = require("Module:utilities").format_categories({tili:getCanonicalName() .. (learned and " learnedly" or "") .. " borrowed terms"}, tili, sort_key)

return (notext and "" or text) .. export.format_etyl(tili, source, sort_key) .. link .. categories end

return export


local export = {}

function export.format_etyl(lang, source, sort_key)
	local info
	
	if source:getCode() == "und" then
		info = {
			display = "undetermined",
			cat_name = "other languages"}
	elseif source:getType() == "etymology language" then
		info = {
			display = "[[w:" .. source:getWikipediaArticle() .. "|" .. source:getCanonicalName() .. "]]",
			cat_name = source:getCanonicalName()}
	elseif source:getType() == "family" then
		info = {
			display = "[[w:" .. source:getCategoryName() .. "|" .. source:getCanonicalName() .. "]]",
			cat_name = source:getCategoryName()}
	else
		info = {
			display = "[[w:" .. source:getWikipediaArticle() .. "|" .. source:getCanonicalName() .. "]]",
			cat_name = source:getCanonicalName()}
	end
	
	-- Add the categories, but only if there is a current language
	local categories = ""
	
	if lang then
		local m_utilities = require("Module:utilities")
		
		categories = {}
		
		if lang:getCode() == source:getCode() then
			categories = m_utilities.format_categories({lang:getCanonicalName() .. " twice-borrowed terms"}, lang, sort_key)
		else
			categories = m_utilities.format_categories({lang:getCanonicalName() .. " terms derived from " .. info.cat_name}, lang, sort_key)
		end
	end
	
	return "<span class=\"etyl\">" .. info.display .. categories .. "</span>"
end

function export.format_derived(lang, sc, source, term, alt, id, annotations, sort_key)
	local linktarget = source
	
	if source:getType() == "etymology language" then
		linktarget = require("Module:languages").getByCode(source:getParentCode())
	end
	
	local link = ""
	
	if term or alt or id or annotations.tr or annotations.gloss or annotations.pos or annotations.lit then
		link = " " .. require("Module:links").full_link(term, alt, linktarget, sc, "term", id, annotations, true)
	end
	
	return export.format_etyl(lang, source, sort_key) .. link
end

function export.format_inherited(lang, sc, source, term, alt, id, annotations, sort_key)
	local linktarget = source
	
	if source:getType() == "etymology language" then
		linktarget = require("Module:languages").getByCode(source:getParentCode())
	end
	
	if not lang:hasAncestor(linktarget) and mw.title.getCurrentTitle().nsText ~= "Template" then
		error(source:getCanonicalName() .. " is not an ancestor of " .. lang:getCanonicalName() .. ".")
	end
	
	local link = ""
	
	if term or alt or id or annotations.tr or annotations.gloss or annotations.pos or annotations.lit then
		link = " " .. require("Module:links").full_link(term, alt, linktarget, sc, "term", id, annotations, true)
	end
	
	local categories = require("Module:utilities").format_categories({lang:getCanonicalName() .. " terms inherited from " .. source:getCanonicalName()}, lang, sort_key)
	
	return export.format_etyl(nil, source, sort_key) .. link .. categories
end

function export.format_borrowed(lang, sc, source, term, alt, id, annotations, sort_key, nocap, notext, learned)
	local linktarget = source
	
	if source:getType() == "etymology language" then
		linktarget = require("Module:languages").getByCode(source:getParentCode())
	end
	
	local text = ""
	
	if learned then
		text = "[[learned borrowing|" .. (nocap and "l" or "L") .. "earned borrowing]] from "
	else
		text = "[[Appendix:Glossary#loanword|" .. (nocap and "b" or "B") .. "orrowing]] from "
	end
	
	local link = ""
	
	if term or alt or id or annotations.tr or annotations.gloss or annotations.pos or annotations.lit then
		link = " " .. require("Module:links").full_link(term, alt, linktarget, sc, "term", id, annotations, true)
	end
	
	local categories = require("Module:utilities").format_categories({lang:getCanonicalName() .. (learned and " learnedly" or "") .. " borrowed terms"}, lang, sort_key)
	
	return (notext and "" or text) .. export.format_etyl(lang, source, sort_key) .. link .. categories
end

return export