Jump to content

Module:families

ຈາກ Wiktionary

Documentation for this module may be created at Module:families/doc

local export = {}

local Family = {}


function Family:getCode()
	return self._code
end


function Family:getCanonicalName()
	return self._rawData.canonicalName
end


function Family:getDisplayForm()
	return self:getCategoryName()
end


function Family:getOtherNames(onlyOtherNames)
	return require("Module:language-like").getOtherNames(self, onlyOtherNames)
end


function Family:getAliases()
	return self._rawData.aliases or {}
end


function Family:getVarieties(flatten)
	return require("Module:language-like").getVarieties(self, flatten)
end


--function Family:getAllNames()
--	return self._rawData.names
--end


function Family:getType()
	return "family"
end


function Family:getFamily()
	if self._rawData.family and not self._familyObject then
		self._familyObject = export.getByCode(self._rawData.family)
	end
	
	return self._familyObject
end


function Family:getProtoLanguage()
	if not self._protoLanguage then
		self._protoLanguage = require("Module:languages").getByCode(self._rawData.protoLanguage or self._code .. "-pro")
	end
	
	return self._protoLanguage
end


function Family:getCategoryName()
	local name = self._rawData.canonicalName
	
	-- If the name already has "languages" in it, don't add it.
	if name:find("[Ll]anguages$") then
		return name
	else
		return name .. " languages"
	end
end

function Family:makeCategoryLink()
	return "[[:Category:" .. self:getCategoryName() .. "|" .. self:getCategoryName() .. "]]"
end

function Family:getWikidataItem()
	return self._rawData.wikidata_item
end

function Family:getWikipediaArticle()
	return (self:getWikidataItem() and mw.wikibase and mw.wikibase.sitelink(self:getWikidataItem(), 'enwiki')) or
		self:getCategoryName()
end
	
function Family:makeWikipediaLink()
	return "[[w:" .. self:getWikipediaArticle() .. "|" .. self:getCanonicalName() .. "]]"
end


function Family:toJSON()
	local ret = {
		canonicalName = self:getCanonicalName(),
		categoryName = self:getCategoryName(),
		code = self._code,
		family = self._rawData.family,
		protoLanguage = self._rawData.protoLanguage,
		otherNames = self:getOtherNames(true),
		aliases = self:getAliases(),
		varieties = self:getVarieties(),
		type = self:getType(),
		wikidataItem = self:getWikidataItem(),
		}
	
	return require("Module:JSON").toJSON(ret)
end


function Family:getRawData()
	return self._rawData
end


Family.__index = Family


function export.makeObject(code, data)
	return data and setmetatable({ _rawData = data, _code = code }, Family) or nil
end


function export.getByCode(code)
	if code == 'kdo' then
		require('Module:debug').track('Kordofanian')
	end
	
	return export.makeObject(code, mw.loadData("Module:families/data")[code])
end

function export.getByCanonicalName(name)
	local code = mw.loadData("Module:families/by name")[name]
	
	if not code then
		return nil
	end
	
	return export.makeObject(code, mw.loadData("Module:families/data")[code])
end

return export
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy