Module:Etymology languages

local export = {}

local EtymologyLanguage = {}


function EtymologyLanguage:getCode()
	return self._code
end


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


function EtymologyLanguage:getOtherNames()
	return self._rawData.otherNames or {}
end


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


function EtymologyLanguage:getCategoryName()
	return self:getCanonicalName()
end


function EtymologyLanguage:getType()
	return "etymology language"
end


function EtymologyLanguage:getParentCode()
	return self._rawData.parent
end


function EtymologyLanguage:getAncestors()
	if not self._ancestorObjects then
		self._ancestorObjects = {}
		
		for _, ancestor in ipairs(self._rawData.ancestors or {}) do
			table.insert(self._ancestorObjects, export.getByCode(ancestor) or require("Module:languages").getByCode(ancestor))
		end
	end
	
	return self._ancestorObjects
end

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

function EtymologyLanguage:getWikipediaArticle()
	return self._rawData.wikipedia_article or 
		(self:getWikidataItem() and mw.wikibase and
	     mw.wikibase.sitelink(self:getWikidataItem(), 'enwiki')) or
	     self._rawData.canonicalName
end

function EtymologyLanguage:makeWikipediaLink()
	return "[[w:" .. self:getWikipediaArticle() .. "|" .. self:getCanonicalName() .. "]]"
end


function EtymologyLanguage:toJSON()
	local ret = {
		canonicalName = self:getCanonicalName(),
		categoryName = self:getCategoryName(),
		code = self._code,
		otherNames = self:getOtherNames(),
		parent = self._rawData.parent,
		type = self:getType(),
		}
	
	return require("Module:JSON").toJSON(ret)
end


function EtymologyLanguage:getRawData()
	return self._rawData
end


EtymologyLanguage.__index = EtymologyLanguage


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


function export.getByCode(code)
	return export.makeObject(code, mw.loadData("Module:etymology languages/data")[code])
end


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


return export

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.