Մոդուլ:Taxobox
Արտաքին տեսք
Documentation for this module may be created at Մոդուլ:Taxobox/doc
local export = {}
local omsetjingsdata = require('Module:Taxobox/Armenian names')
local taksonomiWD = require('Module:Taxobox/Taxonomy from Wikidata')
function export.hentarmenianName(rang, vitskaplegName)
if omsetjingsdata[rang] then
return omsetjingsdata[rang][vitskaplegName]
else
return nil
end
end
function export.formaterName(vitskaplegName, armenianName, sidetittel, rang, art, erListeelement, lenk, uthev, utdoeydd, erVirus)
local text = ''
local skalKursiverast = erVirus or rang:match('genus') or rang:match('species')
local mellomrom = ' '
local vitskaplegNameFormatert = vitskaplegName:gsub(" ", "")
if erListeelement then
mellomrom = ' '
end
if armenianName == vitskaplegName then -- samanfallande armenian og vitskapleg name tyder gjerne på uynskt duplikasjon
armenianName = nil
end
if armenianName then
armenianName = mw.language.getContentLanguage():ucfirst(armenianName) -- stor fyrstebokstav
if art and mw.title.getCurrentTitle().text == armenianName and not sidetittel then
text = '[[' .. armenianName .. ' (' .. rang .. ')|' .. armenianName .. ']]' -- unngå utheving av høgre rang ved samanfallande name
else
if uthev then
text = "'''" .. armenianName .. "'''"
elseif sidetittel then
text = '[[' .. sidetittel ..'|' .. armenianName .. ']]'
elseif lenk ~= false then
text = '[[' .. armenianName .. ']]'
else
text = armenianName
end
end
if skalKursiverast then -- legg til vitskapleg name
text = text .. mellomrom .. "''" .. '<small>(' .. vitskaplegNameFormatert .. ')</small>' .. "''"
else
text = text .. mellomrom .. '<small>(' .. vitskaplegNameFormatert .. ')</small>'
end
else
if uthev then
text = "'''" .. vitskaplegNameFormatert .. "'''"
elseif sidetittel then
text = '[[' .. sidetittel .. '|' .. vitskaplegNameFormatert .. ']]'
elseif lenk ~= false then
text = "''".. vitskaplegNameFormatert .. "''"
else
text = vitskaplegNameFormatert
end
if skalKursiverast then
text = "'" .. text .. "'"
end
end
if utdoeydd then
text = '†' .. text
end
return text
end
function export.klassifisertAvWD(Wikidataelement, regnum)
if Wikidataelement.claims and Wikidataelement.claims.P225 then
local kategoriar = ''
local resultat = ''
local klassifisertAv, klassifisertAar, parentesar
if Wikidataelement.claims.P225[1]['qualifiers'] and Wikidataelement.claims.P225[1]['qualifiers']['P405'] then
n = #Wikidataelement.claims.P225[1]['qualifiers']['P405'] -- talet på forfattarar for dette taksonet
for i = 1, n do
personID = 'Q' .. Wikidataelement.claims.P225[1]['qualifiers']['P405'][i]['datavalue']['value']['numeric-id'] -- person
personelement = mw.wikibase.getEntity(personID) -- hent elementet til personen
klassifisertAvName = personelement:getLabel()
personsidetittel = personelement:getSitelink('hywiki') -- finn evt. lokal wikiside
splittaName = mw.text.split(klassifisertAvName, ' ')
if regnum == 'Animalia' and personelement.claims.P835 then -- zoologisk sitering
personskildring = personelement.claims.P835[1]['mainsnak']['datavalue']['value']
for i = 1, #personelement.claims.P835 do
if mw.ustring.find(klassifisertAvName, personelement.claims.P835[i]['mainsnak']['datavalue']['value']) then -- føretrekk sitering som speglar name på armenian
personskildring = personelement.claims.P835[i]['mainsnak']['datavalue']['value']
break
end
end
elseif regnum == 'Plantae' or regnum == 'Fungi' and personelement.claims.P428 then -- botanikkavstytting
personskildring = personelement.claims.P428[1]['mainsnak']['datavalue']['value']
elseif personelement.claims.P734 and personelement.claims.P734[1]['mainsnak']['datavalue'] then -- nytt etternameet
etternameID = personelement.claims.P734[1]['mainsnak']['datavalue']['value']['id']
personskildring = mw.wikibase.getEntity(etternameID):getLabel()
else
personskildring = splittaName[#splittaName] -- nytt berre sisteleddet av nameet
end
tittel = personsidetittel or klassifisertAvName
if i == 1 then
klassifisertAv = '[[' .. tittel .. '|' .. personskildring .. ']]'
elseif i ~= n then
klassifisertAv = klassifisertAv .. ', ' .. '[[' .. tittel .. '|' .. personskildring .. ']]'
else
klassifisertAv = klassifisertAv .. ' & ' .. '[[' .. tittel .. '|' .. personskildring .. ']]'
end
if mw.title.getCurrentTitle().namespace == 0 and mw.title.new('Կատեգորիա:' .. klassifisertAvName .. ' հեղինակի անվանած տաքսոններ'):getContent() ~= nil then
kategoriar = kategoriar .. '[[Կատեգորիա:' .. klassifisertAvName .. ' հեղինակի անվանած տաքսոններ]]'
else
klassifisertAvModul = require('Module:Taxobox/Classification')
kategoriar = kategoriar .. klassifisertAvModul.hovud(personskildring, 'berre kategori', 'om finst')
end
end
end
if Wikidataelement.claims.P225[1]['qualifiers'] and Wikidataelement.claims.P225[1]['qualifiers']['P574'] then
klassifisertDato = Wikidataelement.claims.P225[1]['qualifiers']['P574'][1]['datavalue']['value']['time'] -- dato
klassifisertAar = '[[' .. mw.text.split(mw.ustring.sub(klassifisertDato, 2), '-')[1] .. ']]'
end
if Wikidataelement.claims.P225[1]['qualifiers'] and Wikidataelement.claims.P225[1]['qualifiers']['P31'] then
if Wikidataelement.claims.P225[1]['qualifiers']['P31'][1]['datavalue']['value']['numeric-id'] == 14594740 then -- skal ha parentesar
parentesar = true
end
end
if klassifisertAv and klassifisertAar then
resultat = klassifisertAv .. ', ' .. klassifisertAar
else
resultat = klassifisertAv or klassifisertAar or resultat
end
if parentesar then
resultat = '(' .. resultat .. ')'
end
resultat = resultat .. kategoriar
return resultat
else
return nil
end
end
function export.nyRadseksjon(innhald)
local cat = ''
if regnum == 'Animalia' then
bckcolor = '#FFC0CB'
cat = cat .. '[[Կատեգորիա:Կենդանիներ այբբենական կարգով]]'
elseif regnum == 'Plantae' then
bckcolor = 'lightgreen'
cat = cat .. '[[Կատեգորիա:Բույսեր այբբենական կարգով]]'
elseif regnum == 'Fungi' then
bckcolor = 'lightblue'
cat = cat .. '[[Կատեգորիա:Սնկեր այբբենական կարգով]]'
elseif regnum == 'Bacteria' then
bckcolor = '#D3D3D3'
cat = cat .. '[[Կատեգորիա:Բակտերիաներ այբբենական կարգով]]'
elseif regnum == 'Archaea' then
bckcolor = '#F3E0E0'
cat = cat .. '[[Կատեգորիա:Արքեաներ այբբենական կարգով]]'
else
bckcolor ='#eaecf0'
end
local text = string.format('\n|- valign="top"\n|-\n| style="text-align:center; font-size:1.1em; padding:0.5em 0 0.5em 0; background: #eaecf0" colspan="2"|%s', innhald)
return text .. cat
end
function export.nyRad(skildring, innhald)
if skildring ~= '' then
skildring = skildring .. '\n| '
end
local text = string.format('\n|- valign="top"\n| %s%s', skildring, innhald)
return text
end
function export.lagListe(listedata, rang, erVirus)
local listeelement = mw.text.split(listedata, ',')
local liste = ''
for i = 1, #listeelement do
local listeelementet = listeelement[i]:gsub('^%s*', '') -- fjern leiande mellomrom
local armenianName = export.hentarmenianName(rang, listeelementet)
listeelementet = export.formaterName(listeelementet, armenianName, nil, rang, false, true, true, false, false, erVirus)
liste = liste .. listeelementet .. '<br />'
end
return liste
end
function export.statustext(status, omraade)
local text = ''
local kategoriar = ''
local WD = {Q211005 = 'lc', Q719675 = 'nt', Q278113 = 'vu', Q11394 = 'en',
Q219127 = 'cr', Q239509 = 'ew', Q237350 = 'ex', Q3245245 = 'dd'}
if mw.ustring.sub(status, 1, 1) == 'q' then -- stoda vart henta frå Wikidata
status = WD[mw.ustring.upper(mw.ustring.sub(status, 1, 1)) .. mw.ustring.sub(status, 2)]
end
if omraade == 'verda' then
text = '<span style="text-align:center"><small>\'\'\'[[Կարմիր գիրք|Հատուկ պահպանության կարգավիճակ՝]]\'\'\' '
end
if omraade == 'Armenian' then
text = text .. '\'\'\'[[Հայաստանի կարմիր գիրք|Կարգավիճակը ՀՀ-ում՝]]\'\'\' '
end
if status == 'se' or status == 'secure' or status == 'ikkje truga'then
text = text .. 'Չվտանգված'
elseif status == 'dom' or status == 'domesticated' or status == 'husdyr' then
text = text .. 'Ընտելացված'
elseif status == 'dd' or status == 'datamangel' or status == 'data' then
text = text .. '[[Պատկեր:Status none DD.svg|frameless]] <br/> Տվյալների անբավարարություն'
if omraade == 'verda' then
kategoriar = kategoriar .. '[[Կատեգորիա:Տվյալների անբավարարությամբ տեսակներ]]'
end
elseif status == 'lc' or status == 'livskraftig' then
text = text .. '[[Պատկեր:Status iucn3.1 LC hy.svg|frameless]] <br/> [[Քիչ մտահոգող տեսակ|Քիչ մտահոգող տեսակ]]'
if omraade == 'verda' then
kategoriar = kategoriar .. '[[Կատեգորիա:Քիչ մտահոգող տեսակներ]]'
end
elseif status == 'nt' or status == 'nær truga' then
text = text .. '[[Պատկեր:Status iucn3.1 NT hy.svg|frameless]] <br/> [[Վտանգման սպառնացող վիճակին մոտ գտնվող տեսակ|Վտանգման սպառնացող վիճակին մոտ գտնվող տեսակ]]'
if omraade == 'verda' then
kategoriar = kategoriar .. '[[Կատեգորիա:Վտանգման սպառնացող վիճակին մոտ գտնվող տեսակներ]]'
end
elseif status == 'vu' or status == 'sårbar' then
text = text .. '[[Պատկեր:Status iucn3.1 VU hy.svg|frameless]] <br/> [[Խոցելի տեսակ|Խոցելի տեսակ]]'
if omraade == 'verda' then
kategoriar = kategoriar .. '[[Կատեգորիա:Խոցելի տեսակներ]]'
elseif omraade == 'Armenian' then
kategoriar = kategoriar .. '[[Կատեգորիա:Հայաստանի խոցելի տեսակներ]]'
end
elseif status == 'en' or status == 'sterkt truga' then
text = text .. '[[Պատկեր:Status iucn3.1 EN hy.svg|frameless]] <br/> [[Վտանգված տեսակ|Վտանգված տեսակ]]'
if omraade == 'verda' then
kategoriar = kategoriar .. '[[Կատեգորիա:Վտանգված տեսակներ]]'
elseif omraade == 'Armenian' then
kategoriar = kategoriar .. '[[Կատեգորիա:Հայաստանի վտանգված տեսակներ]]'
end
elseif status == 'cr' or status == 'kritisk truga' then
text = text .. '[[Պատկեր:Status iucn3.1 CR hy.svg|frameless]] <br/> [[Կրիտիկական վիճակում գտնվող տեսակ|Կրիտիկական վիճակում գտնվող]]'
if omraade == 'verda' then
kategoriar = kategoriar .. '[[Կատեգորիա:Կրիտիկական վիճակում գտնվող տեսակներ]]'
elseif omraade == 'Armenian' then
kategoriar = kategoriar .. '[[Կատեգորիա:Հայաստանի կրիտիկական վիճակում գտնվող տեսակներ]]'
end
elseif status == 'ex' or status == 'utrydda' then
text = text .. '[[Պատկեր:Status iucn3.1 EX hy.svg|frameless]] <br/> [[Անհետացած տեսակ|Անհետացած]]'
if omraade == 'utrydda' then
kategoriar = kategoriar .. '[[Կատեգորիա:Անհետացած տեսակներ]]'
end
elseif status == 'ew' then
text = text .. '[[Պատկեր:Status iucn3.1 EW hy.svg|frameless]] <br/> [[Վայրի բնության մեջ անհետացած տեսակ|Անհետացած վայրի բնության մեջ]]'
kategoriar = kategoriar .. '[[Կատեգորիա:Վայրի բնության մեջ անհետացած տեսակ]]'
end
text = text .. '</small>'
if mw.title.getCurrentTitle().namespace == 0 then -- legg berre til kategoriar i hovudnameerommet
text = text .. kategoriar
end
return text
end
function export.bilete(bilete, bilettext, biletstorleik)
local bilettext1 = ''; local bilettext2 = ''
local biletstorleik = biletstorleik or ''
if bilettext then
bilettext1 = '|' .. bilettext
bilettext2 = string.format('<br /><small>%s</small>', bilettext)
end
if biletstorleik ~= '' then
biletstorleik = '|' .. biletstorleik
end
return string.format('[[Պատկեր:%s%s|frameless%s]]', bilete, biletstorleik, bilettext1) .. bilettext2
end
function export.hovud(frame)
local tabell = {}
local taxobox = ''
local args = frame:getParent().args
local name = {}
local erVirus = args['er_virus']
local status = args['status']
if status == '' then status = nil end
local statusArmenian = args['status_armenian']
if statusArmenian == '' then statusArmenian = nil end
local bilete = args['bilete'] or args['image']
if bilete == '' then bilete = nil end
local bilettext1 = args['bilettext'] or args['imagetext']
if bilettext1 == '' then bilettext1 = nil end
local bilettext2 = args['bilettext2'] or args['imagetext2']
if bilettext2 == '' then bilettext2 = nil end
local bilete2 = args['bilete2'] or args['image2']
if bilete2 == '' then bilete2 = nil end
local rangemap = args['range_map']
if rangemap == '' then rangemap = nil end
local rangelegend = args['range_legend']
if rangelegend == '' then rangelegend = nil end
local ID = args['id'] or args['ID']
if ID == '' then ID = nil end
local Wikidataelement
if not args['ingen_Wikidata'] or args['ingen_Wikidata'] ~= 'այո' then
elementID = ID or mw.wikibase.getEntityIdForCurrentPage()
Wikidataelement = mw.wikibase.getEntity(elementID) -- Wikidata-elementet til sida (eller oppgjeven førehandsvisings-ID)
end
local taksonomiFraaWDArg = args['taxonomy_WD'] or args['Վիքիդատա']
local taksonomiFraaWD = false
if not taksonomiFraaWDArg or taksonomiFraaWDArg == '' or taksonomiFraaWDArg == 'ոչ' then
taksonomiFraaWD = false
elseif Wikidataelement then
taksonomiFraaWD = true
end
SIDETITTEL = mw.title.getCurrentTitle().text
--
tabell['status og utbreiing'] = {}
tabell.bilete = {[1] = {}, [2] = {}}
tabell.taksonomi = {hierarki = {}, rangar = {}}
tabell.klassifiseringsboks = {innhald = {}}
--
-- handsam bilete
local kjoenn = {Q44148 = ' (արու)', Q43445 = ' (էգ)'}
if not bilete and not bilete2 then -- sjå om det finst bilete på Wikidata
if Wikidataelement and Wikidataelement.claims and Wikidataelement.claims.P18 then
local besteBileta = Wikidataelement:getBestStatements('P18')
if besteBileta[1]['mainsnak']['datavalue'] then
if besteBileta[1]['qualifiers'] and besteBileta[1]['qualifiers']['P21'] then
tabell.bilete[1]['kjønn'] = kjoenn[besteBileta[1]['qualifiers']['P21'][1]['datavalue']['value']['id']]
bilete = besteBileta[1]['mainsnak']['datavalue']['value']
end
end
if besteBileta[2] and besteBileta[2]['mainsnak']['datavalue'] then
if besteBileta[2]['qualifiers'] and besteBileta[2]['qualifiers']['P21'] then
bilete2 = besteBileta[2]['mainsnak']['datavalue']['value']
tabell.bilete[2]['kjønn'] = kjoenn[besteBileta[2]['qualifiers']['P21'][1]['datavalue']['value']['id']]
end
end
if not bilete then
local besteBiletet = nil
for k, v in pairs(besteBileta) do -- plukk ut bilete med nyarmenian eller engelsk text
if not besteBiletet then
besteBiletet = {bilete = v, rang = 9000}
end
if v['qualifiers'] and v['qualifiers']['P2439'] and v['qualifiers']['P2439'][1]['datavalue']['value']['id'] then
if v['qualifiers']['P2439'][1]['datavalue']['value']['id'] =='Q25164' and besteBiletet.rang > 1 then
besteBiletet = {bilete = v, rang = 1}
elseif v['qualifiers']['P2439'][1]['datavalue']['value']['id'] =='Q1860' and besteBiletet.rang > 2 then
besteBiletet = {bilete = v, rang = 2}
end
end
end
bilete = besteBiletet.bilete['mainsnak']['datavalue']['value']
end
end
end
if bilete then
tabell.bilete[1] = {fil = bilete, skildring = bilettext1, storleik = args['biletstorleik'] or args['imagestorleik'], ['kjønn'] = tabell.bilete[1]['kjønn']}
end
if bilete2 then
tabell.bilete[2] = {fil = bilete2, skildring = bilettext2, storleik = args['biletstorleik2'] or args['imagestorleik2'], ['kjønn'] = tabell.bilete[2]['kjønn']}
end
if not status and Wikidataelement then
if Wikidataelement.claims and Wikidataelement.claims.P141 then -- hent IUCN-stode frå Wikidata
status = Wikidataelement.claims.P141[1]['mainsnak']['datavalue']['value']['id']
end
end
local rangelegendmerke = false
if not rangemap and Wikidataelement then
if Wikidataelement.claims and Wikidataelement.claims.P181 then -- hent rangemap frå Wikidata
rangemap = Wikidataelement.claims.P181[1]['mainsnak']['datavalue']['value']
end
end
-- handsam status
if status or statusArmenian or rangemap then
local seksjonstittel
if rangemap then
seksjonstittel = 'Տարածվածություն'
if status or statusArmenian then
seksjonstittel = seksjonstittel .. ' և պահպանություն'
end
elseif status or statusArmenian then
seksjonstittel = 'Կարգավիճակ'
end
tabell['status og utbreiing'].superskrift = export.nyRadseksjon(string.format("'''%s'''", seksjonstittel))
tabell['status og utbreiing'].status = {}
end
if status and status ~= '' then
status = status:lower()
tabell['status og utbreiing'].status.verda = export.statustext(status, 'verda')
if args['status_kjelde'] then
tabell['status og utbreiing'].status.verda = tabell['status og utbreiing'].status.verda .. args['status_kjelde']
end
end
if statusArmenian and statusArmenian ~= '' then
statusArmenian = statusArmenian:lower()
tabell['status og utbreiing'].status.Armenian = ''
if status then
tabell['status og utbreiing'].status.Armenian = '<br />'
end
tabell['status og utbreiing'].status.Armenian = tabell['status og utbreiing'].status.Armenian .. export.statustext(statusArmenian, 'Armenian')
if args['status_armenian_kjelde'] then
tabell['status og utbreiing'].status.Armenian = tabell['status og utbreiing'].status.Armenian .. args['status_armenian_kjelde']
end
end
-- handsam rangemap
if rangemap then
tabell['status og utbreiing'].rangemap = {}
tabell['status og utbreiing'].rangemap.fil = rangemap
if rangelegend then
tabell['status og utbreiing'].rangemap.skildring = rangelegend
end
if args['rangemapstorleik'] then
tabell['status og utbreiing'].rangemap.storleik = args['rangemapstorleik']
end
end
-- byrjing på klassifisering
if taksonomiFraaWD then -- skal henta inn taksonomidata frå Wikidata
taksonomidataWD = taksonomiWD.hovud(ID)
end
tabell.taksonomi.superskrift = export.nyRadseksjon("'''[[Կենսաբանական դասակարգում|Դասակարգում]]'''")
-- særhandsaming for dette argumentet
local regnum = args['regnum']
if not regnum and taksonomiFraaWD and taksonomidataWD['regnum'] then
regnum = taksonomidataWD['regnum'][1]
end
local klassifisertAv = args['klassifisert_av']
-- format: {<liste super gyldige argumentname>}, <skildring av raden>}
local gyldigeArgument = {{{'domain'}, "'''[[Դոմեն (կենսաբանություն)|Դոմեն]]'''"}, {{'superregnum'}, "'''[[Թագավորություն (կենսաբանություն)|Վերնաթագավորություն ]]'''"},
{{'regnum'}, "'''[[Թագավորություն (կենսաբանություն)|Թագավորություն ]]'''"}, {{'subregnum'}, "'''[[Թագավորություն (կենսաբանություն)|Ենթաթագավորություն ]]'''"},
{{'infraregnum'}, "'''[[Թագավորություն (կենսաբանություն)|Ինֆրաթագավորություն]]'''"}, {{'superphylum', 'superdivisio'}, "'''[[Տիպ (կենսաբանություն)|Վերնաբաժին]]'''"},
{{'phylum', 'divisio'}, "'''[[Տիպ (կենսաբանություն)|Տիպ/Բաժին]]'''"}, {{'subphylum', 'subdivisio'}, "'''[[Տիպ (կենսաբանություն)|Ենթատիպ]]'''"},
{{'infraphylum', 'infradivisio'}, "'''[[Տիպ (կենսաբանություն)|Ինֆրատիպ]]'''"},
{{'superclassis'}, "'''[[Դաս (կենսաբանություն)|Վերնադաս]]'''"}, {{'classis'}, "'''[[Դաս (կենսաբանություն)|Դաս]]'''"},
{{'subclassis'}, "'''[[Դաս (կենսաբանություն)|Ենթադաս]]'''"}, {{'infraclassis'}, "'''[[Դաս (կենսաբանություն)|Ինֆրադաս]]'''"},
{{'superordo'}, "'''[[Կարգ|Վերնակարգ]]'''"}, {{'ordo'}, "'''[[Կարգ]]'''"},
{{'subordo'}, "'''[[Կարգ|Ենթակարգ]]'''"}, {{'infraordo'}, "'''[[Կարգ|Ինֆրակարգ]]'''"},
{{'superfamilia'}, "'''[[Ընտանիք (կենսաբանություն)|Վերնաընտանիք]]'''"}, {{'familia'}, "'''[[Ընտանիք (կենսաբանություն)|Ընտանիք]]'''"},
{{'subfamilia'}, "'''[[Ընտանիք (կենսաբանություն)|Ենթաընտանիք]]'''"}, {{'superstamme', 'supertribus'}, "'''Վերնատրիբա'''"},
{{'stamme', 'tribus'}, "'''Տրիբա'''"}, {{'substamme', 'subtribus'}, "'''Ենթատրիբա'''"},
{{'genus'}, "'''[[Ցեղ (կենսաբանություն)|Ցեղ]]'''"}, {{'subgenus'}, "'''[[Ցեղ (կենսաբանություն)|Ենթացեղ]]'''"}, {{'section_super_species'}, "'''Վերնատեսակ'''"},
{{'species'}, "'''[[Կենսաբանական տեսակ|Տեսակ]]'''"}, {{'subspecies'}, "'''[[Կենսաբանական տեսակ|Ենթատեսակ]]'''"},
{{'clade'}, "'''''Կլադ'''''"}, {{'unranked'}, "'''''(առանց աստիճանակարգի)''''':"}}
local rangskildring = {}
for i = 1, #gyldigeArgument do
rangskildring[gyldigeArgument[i][1][1]] = gyldigeArgument[i][2] -- bygg tabell som kan indekserast med rangname
end
local rangnummer = 0
for i = 1, #gyldigeArgument do -- bygg infoboksen, rang for rang
local erWDData = false -- om taksonomidataet er henta frå Wikidata
local argumenthovudname = gyldigeArgument[i][1][1] -- t.d. 'phylum'; for å vera eintydig
for j = 1, #gyldigeArgument[i][1] do -- iterer super alle mogelege argumentsynonym
argumentname = gyldigeArgument[i][1][j]
argumentinndata = args[argumentname .. '_rå'] or args[argumentname]
if not argumentinndata and taksonomiFraaWD then
if taksonomidataWD[argumentname] then
argumentinndata = taksonomidataWD[argumentname]
erWDData = true
end
end
if argumentinndata then
break
end
end
local vitskaplegName
local lenk = true -- om det skal opprettast ei wikilenkje
local uthev = false -- om nameet skal uthevast (t.d. for monotypi)
local utdoeydd = false -- om taksoner er utdøydd
if argumentinndata then
rangnummer = rangnummer + 1
tabell.taksonomi.hierarki[rangnummer] = {innhald = {}}
tabell.taksonomi.hierarki[rangnummer].rangname = argumenthovudname
if args[argumentname .. '_rå'] then
tabell.taksonomi.hierarki[rangnummer].innhald['rå'] = argumentinndata
elseif args[argumentname .. '_armenian'] then
tabell.taksonomi.hierarki[rangnummer].innhald['armenian name'] = args[argumentname .. '_armenian']
tabell.taksonomi.hierarki[rangnummer].innhald['vitskapleg name'] = argumentinndata
else
local sidetittel = nil
if erWDData then
vitskaplegName = argumentinndata[1]
sidetittel = argumentinndata[3]
monotypisk = argumentinndata[4]
utdoeydd = argumentinndata[5]
tabell.taksonomi.hierarki[rangnummer].innhald.monotypisk = monotypisk
if argumentinndata[2] then -- fann det armeniane nameet på Wikidata
armenianName = argumentinndata[2]
else
armenianName = export.hentarmenianName(argumenthovudname, vitskaplegName)
end
if argumenthovudname == 'section_super_species' then
if vitskaplegName:find('sect.') then
vitskaplegName = mw.text.split(vitskaplegName, 'sect.')[2]
end
if not sidetittel then -- unngår potensielt uheldig lenking
lenk = false
end
end
if vitskaplegName:find('subg.') then
vitskaplegName = mw.text.split(vitskaplegName, 'subg.')[2]
end
if vitskaplegName:find('subsp.') then
vitskaplegName = mw.ustring.gsub(vitskaplegName, ' subsp. ', ' ')
end
else
if argumenthovudname == 'species' then
vitskaplegName = tabell.taksonomi.rangar['genus'].innhald['vitskapleg name'] .. ' ' .. argumentinndata
elseif argumenthovudname == 'subspecies' then
vitskaplegName = tabell.taksonomi.rangar['genus'].innhald['vitskapleg name'] .. ' ' .. tabell.taksonomi.rangar['species'].innhald['vitskapleg name'] .. ' ' .. argumentinndata
else
vitskaplegName = argumentinndata
end
armenianName = export.hentarmenianName(argumenthovudname, vitskaplegName)
end
tabell.taksonomi.hierarki[rangnummer].innhald['vitskapleg name'] = vitskaplegName
if armenianName ~= vitskaplegName then
tabell.taksonomi.hierarki[rangnummer].innhald['armenian name'] = armenianName
end
tabell.taksonomi.hierarki[rangnummer].innhald.sidetittel = sidetittel
tabell.taksonomi.hierarki[rangnummer].innhald.lenk = lenk
tabell.taksonomi.hierarki[rangnummer].innhald['utdøydd'] = utdoeydd
tabell.taksonomi.rangar[argumenthovudname] = tabell.taksonomi.hierarki[rangnummer]
end
end
end
if tabell.taksonomi.hierarki[1] then
ARTIKKELRANGNAME = tabell.taksonomi.hierarki[#tabell.taksonomi.hierarki].rangname
name['vitskapleg'] = tabell.taksonomi.hierarki[#tabell.taksonomi.hierarki].innhald['vitskapleg name']
if tabell.taksonomi.hierarki[1].innhald['vitskapleg name']:match('Virus') then
erVirus = true
end
end
if args['name'] then
name['formatert'] = args['name']:gsub(' ', ' ')
name['uformatert'] = args['name']:gsub("'''", ''):gsub("''", ''):gsub(' ', ' ')
name['armenian'] = name['uformatert']
local fyrst = mw.ustring.find(name['formatert'], '%a')
local storFyrste = mw.ustring.upper(name['formatert']:sub(fyrst, fyrst))
name['formatert, stor fyrstebokstav'] = name['formatert']:sub(1, fyrst-1) .. storFyrste .. name['formatert']:sub(fyrst + 1)
elseif tabell.taksonomi.hierarki[1] then
if tabell.taksonomi.hierarki[#tabell.taksonomi.hierarki].armenian then
name['armenian'] = tabell.taksonomi.hierarki[#tabell.taksonomi.hierarki].armenian
name['formatert'] = name['armenian']:gsub(" ", ' ')
name['uformatert'] = name['armenian']
name['formatert, stor fyrstebokstav'] = mw.ustring.upper(mw.ustring.sub(name['armenian'], 1, 1)) .. mw.ustring.sub(name['armenian'], 2)
elseif taksonomiFraaWD and Wikidataelement and Wikidataelement.labels['hy'] and Wikidataelement.labels['hy']['language'] == 'hy' and Wikidataelement:getLabel('hy') ~= name['vitskapleg'] then -- nytt merkelappen på Wikidata som name
local merkelapp = Wikidataelement:getLabel('hy')
name['uformatert'] = merkelapp
name['formatert'] = merkelapp
name['armenian'] = merkelapp
name['formatert, stor fyrstebokstav'] = mw.ustring.upper(mw.ustring.sub(merkelapp, 1, 1)) .. mw.ustring.sub(merkelapp, 2)
elseif not name['uformatert'] then
name['uformatert'] = name['vitskapleg']
if mw.ustring.match(ARTIKKELRANGNAME, 'genus') or mw.ustring.match(ARTIKKELRANGNAME, 'species') or erVirus then
name['formatert'] = "''" .. name['vitskapleg'] .. "''"
else
name['formatert'] = name['vitskapleg']
end
name['formatert, stor fyrstebokstav'] = name['formatert']
end
end
if tabell.taksonomi.hierarki[1] and name['uformatert'] == name['vitskapleg'] and not mw.ustring.find(SIDETITTEL, name['vitskapleg']:gsub(' ', ' ')) then -- det ser ut som at sidetittelen er eit armenian name på taksonet
name['uformatert'] = mw.language.getContentLanguage():lcfirst(SIDETITTEL)
name['armenian'] = name['uformatert']
name['formatert'] = name['uformatert']
name['formatert, stor fyrstebokstav'] = SIDETITTEL
end
if tabell.taksonomi.hierarki[1] then
name['uformatert, stor fyrstebokstav'] = mw.ustring.upper(mw.ustring.sub(name['uformatert'], 1, 1)) .. mw.ustring.sub(name['uformatert'], 2)
end
if klassifisertAv then -- hent inn name om det finst
klassifisertAvModul = require('Module:Taxobox/Classification')
tabell.klassifiseringsboks.innhald['av, rå'] = klassifisertAvModul.hovud(klassifisertAv, 'wikilenkje, argument', 'om finst')
elseif Wikidataelement then
tabell.klassifiseringsboks.innhald['av, rå'] = export.klassifisertAvWD(Wikidataelement, regnum)
end
tabell.lister = {}
local gyldigeLister = {{{'phylumr', 'divisior'}, 'phylum'}, {{'subphylumr', 'subdivisior'}, 'subphylum'}, {{'klassar', 'classisr'}, 'classis'},
{{'ordoar'}, 'ordo'}, {{'subordoar'}, 'subordo'},
{{'familiar'}, 'familia'}, {{'subfamiliar'}, 'subfamilia'}, {{'genuser'}, 'genus'}, {{'artar'}, 'species'}, {{'subartar'}, 'subspecies'}}
for i = 1, #gyldigeLister do -- finn ut om det er gjeve eit listeargument
local listedata = nil
local listerang = gyldigeLister[i][2]
for j = 1, #gyldigeLister[i][1] do -- iterer super alle mogelege listeargumentsynonym
listename = gyldigeLister[i][1][j]
listedata = args[listename .. '_rå'] or args[listename]
if listedata then
break
end
end
if listedata then
radinnhald = ' colspan="2" |'
if args[listename .. '_rå'] then
radinnhald = radinnhald .. '\n' .. listedata -- sleng på eit lineskift fyrst for å få lista til å verka
else
radinnhald = radinnhald .. export.lagListe(listedata, listerang, erVirus)
end
listetittel = "'''" .. mw.ustring.upper(mw.ustring.sub(listename, 1, 1)) .. mw.ustring.sub(listename, 2) .. "'''"
liste = export.nyRadseksjon(listetittel) .. export.nyRad('', radinnhald)
table.insert(tabell.lister, liste)
end
end
----- Samansetjing av taxoboxen -----
---
--
-- byrjinga på taksboksen
taxobox = string.format([[{| class="toccolours" style="float:right; clear:right; width:300px; margin-left: 1em;"
| colspan="2" style="text-align:center; font-size:1.2em; padding:0.5em 0 0.5em 0; background: %s"|'''%s''' ]], bckcolor, name['formatert, stor fyrstebokstav'] or SIDETITTEL )
taxobox = taxobox .. '\n|-\n| colspan="2" align="center" style="text-align: center; | '
-- bilete
if tabell['bilete'][1].fil or tabell['bilete'][2].fil then
if tabell['bilete'][1]['kjønn'] or tabell['bilete'][2]['kjønn'] then
if mw.ustring.find(name['formatert'], ' ') or mw.ustring.find(name['formatert'], ' ') then
sep = ''
else
sep = ''
end
end
local bilettext1
if not tabell.bilete[1].skildring and ARTIKKELRANGNAME == 'species' or ARTIKKELRANGNAME == 'subspecies' then -- vil berre ha taksonnameet som bilettext for artar og subartar
if tabell.bilete[1]['kjønn'] then
bilettext1 = name['formatert, stor fyrstebokstav'] .. sep .. tabell.bilete[1]['kjønn']
else
bilettext1 = name['formatert, stor fyrstebokstav']
end
else
bilettext1 = tabell.bilete[1].skildring
end
taxobox = taxobox .. export.bilete(tabell.bilete[1].fil, bilettext1, tabell.bilete[1].storleik)
if tabell.bilete[2].fil then
if tabell.bilete[1] then
taxobox = taxobox .. '\n|-\n| colspan="2" align="center" style="text-align: center; | '
end
local bilettext2
if not tabell.bilete[2].skildring then
if tabell.bilete[2]['kjønn'] then
bilettext2 = name['formatert, stor fyrstebokstav'] .. sep .. tabell.bilete[2]['kjønn']
else
bilettext2 = name['formatert, stor fyrstebokstav']
end
else
bilettext2 = tabell.bilete[2].skildring
end
taxobox = taxobox .. export.bilete(tabell.bilete[2].fil, bilettext2, tabell.bilete[2].storleik)
end
end
-- taksonomi
if tabell.taksonomi.hierarki[1] then
taxobox = taxobox .. tabell.taksonomi.superskrift
for i = 1, #tabell.taksonomi.hierarki do
vitskaplegName = tabell.taksonomi.hierarki[i].innhald['vitskapleg name']
armenianName = tabell.taksonomi.hierarki[i].innhald['armenian name']
sidetittel = tabell.taksonomi.hierarki[i].innhald.sidetittel
lenk = tabell.taksonomi.hierarki[i].innhald.lenk
monotypisk = tabell.taksonomi.hierarki[i].innhald.monotypisk
utdoeydd = tabell.taksonomi.hierarki[i].innhald['utdøydd']
rangname = tabell.taksonomi.hierarki[i].rangname
local uthev
if monotypisk then
uthev = true
elseif ARTIKKELRANGNAME == rangname then
uthev = true
end
if rangname == ARTIKKELRANGNAME and not armenianName and name['armenian'] then -- armenian name henta frå artikkeltittelen
armenianName = name['armenian']
end
if not erVirus then
if rangname == 'species' then -- avstytta name
local nameelement = mw.text.split(vitskaplegName, ' ')
vitskaplegName = mw.ustring.sub(nameelement[1], 1, 1) .. '. ' ..nameelement[2]
elseif rangname == 'subspecies' then
local nameelement = mw.text.split(vitskaplegName, ' ')
vitskaplegName = mw.ustring.sub(nameelement[1], 1, 1) .. '. ' .. mw.ustring.sub(nameelement[2], 1, 1) .. '. ' .. nameelement[3]
end
end
if tabell.taksonomi.hierarki[i].innhald['rå'] then
radinnhald = tabell.taksonomi.hierarki[i].innhald['rå']
else
radinnhald = export.formaterName(vitskaplegName, armenianName, sidetittel, rangname, art, false, lenk, uthev, utdoeydd, erVirus)
end
taxobox = taxobox .. export.nyRad(rangskildring[rangname], radinnhald)
end
if mw.ustring.match(ARTIKKELRANGNAME, 'species') then
taxobox = taxobox .. export.nyRadseksjon("'''Միջազգային անվանում'''") .. '\n|- valign="top"\n| style="text-align: center; " colspan="2" |'
taxobox = taxobox .. "'''''" .. tabell.taksonomi.rangar[ARTIKKELRANGNAME].innhald['vitskapleg name'] .. "'''''"
if tabell.klassifiseringsboks.innhald['av, rå'] then
taxobox = taxobox .. '<div style="text-align: center; font-size: smaller; ">' .. tabell.klassifiseringsboks.innhald['av, rå'] .. '</div>'
end
elseif tabell.klassifiseringsboks.innhald['av, rå'] then
taxobox = taxobox .. '<br \><small>' .. tabell.klassifiseringsboks.innhald['av, rå'] .. '</small>'
end
end
-- status og utbreiing
if tabell['status og utbreiing'].superskrift then
taxobox = taxobox .. tabell['status og utbreiing'].superskrift .. '\n|-\n|colspan="2" align="center" style="text-align: center;|'
if tabell['status og utbreiing'].status.verda then
taxobox = taxobox .. tabell['status og utbreiing'].status.verda
end
if tabell['status og utbreiing'].status.Armenian then
taxobox = taxobox .. tabell['status og utbreiing'].status.Armenian
end
if tabell['status og utbreiing'].rangemap then
local skildring = tabell['status og utbreiing'].rangemap.skildring or 'Տաքսոնի տարածվածությունը'
rangelegend1 = '|' .. skildring
rangelegend2 = string.format('<br /> <small>%s</small>', skildring)
taxobox = taxobox .. string.format('<br/>[[Պատկեր:%s%s|frameless%s]]', tabell['status og utbreiing'].rangemap.fil, tabell['status og utbreiing'].rangemap.storleik or '', rangelegend1) .. rangelegend2
end
end
-- lister
if tabell['lister'] then
for i = 1, #tabell.lister do
taxobox = taxobox .. tabell.lister[i]
end
end
-- enden på taxoboxen
taxobox = taxobox .. '\n|}'
--
----
----- taxobox ferdig sett saman -----
if SIDETITTEL == name['uformatert'] and SIDETITTEL ~= mw.ustring.gsub(name['formatert'], ' ', ' ') then
frame:callParserFunction('VISTITTEL', name['formatert'])
end
if ID and mw.title.getCurrentTitle().namespace == 0 then -- åtvaring ved førehandsvising i hovudnameerommet
if ID == mw.wikibase.getEntityIdForCurrentPage() then
mw.addWarning('Argumentet <code>| id = ' .. ID .. '</code> er identisk med elmentet artikkelen er kopla til ' ..
'og skal difor ikkje ha nokon verknad. <code>id</code>-argumentet bør berre nyttast når Wikidata-elementet som har taksonomidataa er ' ..
'eit anna element enn det artikkelen er kopla til, og bør fjernast her.</span></strong>')
else
mw.addWarning('Merk: argumentet <code>| id = ' .. ID .. '</code> kan tyda på at artikkelen er kopla til feil ' ..
'Wikidata-element sidan taksonomidataa ligg på eit anna Wikidata-element enn det artikkelen er kopla til.</span></strong>')
end
end
return taxobox
end
return export