localexport={}localFamily={}functionFamily:getCode()returnself._codeendfunctionFamily:getCanonicalName()returnself._rawData.canonicalNameend--function Family:getAllNames()-- return self._rawData.names--endfunctionFamily:getOtherNames()returnself._rawData.otherNamesor{}endfunctionFamily:getType()return"family"endfunctionFamily:getFamily()ifself._rawData.familyandnotself._familyObjectthenself._familyObject=export.getByCode(self._rawData.family)endreturnself._familyObjectendfunctionFamily:getProtoLanguage()ifnotself._protoLanguagethenself._protoLanguage=require("Module:languages").getByCode(self._rawData.protoLanguageorself._code.."-pro")endreturnself._protoLanguageendfunctionFamily:getCategoryName()localname=self._rawData.canonicalName-- If the name already has "languages" in it, don't add it.ifname:find("[Ll]anguages$")thenreturnnameelsereturnname.." languages"endendfunctionFamily:getWikidataItem()returnself._rawData.wikidata_itemendfunctionFamily:getWikipediaArticle()return(self:getWikidataItem()andmw.wikibaseandmw.wikibase.sitelink(self:getWikidataItem(),'enwiki'))orself:getCategoryName()endfunctionFamily:makeWikipediaLink()return"[[w:"..self:getWikipediaArticle().."|"..self:getCanonicalName().."]]"endfunctionFamily:toJSON()localret={canonicalName=self:getCanonicalName(),categoryName=self:getCategoryName(),code=self._code,family=self._rawData.family,otherNames=self:getOtherNames(),type=self:getType(),wikidataItem=self:getWikidataItem(),}returnrequire("Module:JSON").toJSON(ret)endfunctionFamily:getRawData()returnself._rawDataendFamily.__index=Familyfunctionexport.makeObject(code,data)returndataandsetmetatable({_rawData=data,_code=code},Family)ornilendfunctionexport.getByCode(code)ifcode=='kdo'thenrequire('Module:debug').track('Kordofanian')endreturnexport.makeObject(code,mw.loadData("Module:families/data")[code])endfunctionexport.getByCanonicalName(name)localcode=mw.loadData("Module:families/by name")[name]ifnotcodethenreturnnilendreturnexport.makeObject(code,mw.loadData("Module:families/data")[code])endreturnexport