Modul:Taksoboks: Forskjell mellom sideversjoner

Fra wikisida.no
Hopp til navigering Hopp til søk
Ingen redigeringsforklaring
Ingen redigeringsforklaring
Linje 122: Linje 122:
     }
     }
     local label = ""
     local label = ""
     local param_name = mw.text.trim(frame.args['param_name'])
     local param_name = frame.args['param_name']
   
     local unranked = {
     local unranked = {
     "ikke_rankert_",
     "ikke_rankert_",

Sideversjonen fra 5. jan. 2024 kl. 16:38

Dokumentasjon for denne modulen kan opprettes på Modul:Taksoboks/dok

--[[ Modul:Taksoboks
Denne modulen skal i framtiden kalles fra Mal:Taksoboks. Den skal inneholde nødvendige funksjoner og data som kan fjerne behovet for de mange ulike taksoboksene. Til og begynne med kan den kalles fra de ulike taksoboksene med relevante funksjoner for å utføre samme oppgave. Etterhvert kan kanskje de mange taksoboksene fases ut og fjernes med bot

]]

local p = {}

--[[
the module should give priority to manually added parameters, 30–349 are parameters for scientific classification
]]
--[[
Taksoboksens seksjon som viser biologisk klassifisering har en etikett i venstre kolonne og navnet på et nivå i hierarkiet i høyre kolonne. De forskjellige nivåenes etiketter baseres på de latinske navnene i tabellen translations. De oversatte etikettene på nivåene svarer til Petter Bøckmans Bruker:Petter_Bøckman/fornorske_rang.

Funksjonen tester først om parameteret inneholder virus, unranked_ eller ikke_rankert_ og vil returnere «Gruppe» hvis den oppdager det. Hvis ikke vil den gå gjennom nøklene i translations og returnere oversettelsen straks den finner den.
]]

p.translateRank = function (frame)
    
    local translations = {
    	['superdomain'] = 'Overdomene',
	    ['domain'] = 'Domene',
	    ['superregnum'] = 'Overrike',
	    ['regnum'] = 'Rike',
	    ['subregnum'] = 'Underrike',
	    ['superdivisio'] = 'Overdivisjon',
	    ['superphylum'] = 'Overrekke',
	    ['divisio'] = 'Divisjon',
	    ['phylum'] = 'Rekke',
	    ['zoodivisio'] = 'Divisjon',
	    ['subdivisio'] = 'Subdivisjon',
	    ['subphylum'] = 'Underrekke',
	    ['infraphylum'] = 'Infrarekke',
	    ['microphylum'] = 'Mikrorekke',
	    ['nanophylum'] = 'Nanorekke',
	    ['superclassis'] = 'Overklasse',
	    ['classis'] = 'Klasse',
	    ['subclassis'] = 'Underklasse',
	    ['infraclassis'] = 'Infraklasse',
	    ['magnordo'] = 'Hyperorden',
	    ['superordo'] = 'Overorden',
	    ['ordo'] = 'Orden',
	    ['subordo'] = 'Underorden',
	    ['infraordo'] = 'Infraorden',
	    ['parvordo'] = 'Parvorden',
	    ['superfamilia'] = 'Overfamilie',
	    ['familia'] = 'Familie',
	    ['subfamilia'] = 'Underfamilie',
	    ['supertribus'] = 'Overtribus',
	    ['tribus'] = 'Tribus', -- unødvendig å oversette
	    ['subtribus'] = 'Undertribus',
	    ['alliance'] = 'Allianse',
	    ['genus'] = 'Slekt',
	    ['subgenus'] = 'Underslekt',
	    ['sectio'] = 'Seksjon',
	    ['zoosectio'] = 'Seksjon',
	    ['subsectio'] = 'Underseksjon',
	    ['zoosubsectio'] = 'Underseksjon',
	    ['series'] = 'Serien',
	    ['subseries'] = 'Underserien', -- underserie(n)?
	    ['species_group'] = 'Artsgruppe', -- uoversatt? herfra og ut
	    ['species_subgroup'] = 'Artsuntergruppe', -- skulle kanskje vært Artsundergruppe?
	    ['species_complex'] = 'Artskompleks',
	    ['species'] = 'Art',
	    ['subspecies'] = 'Underart',
	    ['variety'] = 'Varietet',
	    ['form'] = 'Form', -- Herfra og ut er ikke støttet av Mal:Taksoboks, og finnes derfor ikke i params
	    ['infraspecies'] = 'Infraart',
	    ['infratribus'] = 'Infratribus',
	    ['subzoodivisio'] = 'Subdivisjon',
	    ['micrordo'] = 'Mikro-orden',
	    ['grandordo'] = 'Grandorden',
	    ['cohort'] = 'Kohort', -- Skal kursiveres?
	    ['informal'] = 'Uformell gruppe', -- Skal kursiveres?
	    ['informal_group'] = 'Uformell gruppe', -- Skal kursiveres?
	    ['stem group'] = 'Kronegruppe', -- Skal kursiveres?
	    ['crown group'] = 'Kronegruppe', -- Skal kursiveres?
	    ['total group'] = 'Kronegruppe', -- Skal kursiveres?
	    ['legion'] = '{{ucfirst:{{{1}}}}}', -- Skal kursiveres?
	    ['infralegion'] = '{{ucfirst:{{{1}}}}}', -- Skal kursiveres?
	    ['superlegion'] = 'Overlegion', -- Skal kursiveres?
	    ['sublegion'] = 'Underlegion', -- Skal kursiveres?
	    ['cladus'] = 'Gruppe',
	    ['clade'] = 'Gruppe',
	    ['ichnostem-group'] = 'Iknokronegruppe', -- Skal kursiveres?
	    ['ichnosuperclassis'] = 'Iknooverklasse',
	    ['ichnoclassis'] = 'Iknoklasse',
	    ['ichnosubclassis'] = 'Iknounderklasse',
	    ['ichnoinfraclassis'] = 'Iknoinfraklasse',
	    ['ichnodivisio'] = 'Iknodivisjon',
	    ['ichnosubdivisio'] = 'Iknounderdivisjon',
	    ['ichnoinfradivisio'] = 'Iknoinfradivisjon',
	    ['ichnomagnordo'] = 'Iknohyperorden',
	    ['ichnosuperordo'] = 'Iknooverorden',
	    ['ichnograndordo'] = 'Iknograndorden',
	    ['ichnomicrordo'] = 'Iknomikrorden',
	    ['ichnoordo'] = 'Iknoorden',
	    ['ichnosubordo'] = 'Iknoudnerorden',
	    ['ichnoinfraordo'] = 'Iknoinfraorden',
	    ['ichnoparvordo'] = 'Iknoparvorden',
	    ['ichnosuperfamilia'] = 'Iknooverfamilie',
	    ['ichnofamilia'] = 'Iknofamilie',
	    ['ichnosubfamilia'] = 'Iknounderfamilie',
	    ['ichnogenus'] = 'Iknoslekt',
	    ['ichnosubgenus'] = 'Iknounderslekt',
	    ['ichnospecies'] = 'Iknoart',
	    ['ichnosubspecies'] = 'Iknornderart', -- Skulle kanskje vært Iknounderart
	    ['ichnoinfraspecies'] = 'Iknoinfraart',
	    ['ooclassis'] = 'Ooklasse',
	    ['oosubclassis'] = 'Oounderklasse',
	    ['oosupercohort'] = 'Oooverkohort', -- Skal kursiveres?
	    ['oocohort'] = 'Ookohort', -- Skal kursiveres?
	    ['oomagnordo'] = 'Oohyperorden',
	    ['oosuperordo'] = 'Ooverorden',
	    ['oordo'] = 'Oorden',
	    ['morphotype'] = 'Morfotype',
	    ['oofamilia'] = 'Oofamilie',
	    ['oogenus'] = 'Ooslekt',
	    ['oosubgenus'] = 'Oounderslekt',
	    ['oospecies'] = 'Ooart',
	    ['oosubspecies'] = 'Oounderart',
	    ['ooinfraspecis'] = 'Ooinfraart',
    }
    local label = ""
    local param_name = frame.args['param_name']
    
    local unranked = {
    	"ikke_rankert_",
    	"unranked_",
    	"virus",
    }
    
    for _,s in ipairs(unranked) do
    	if mw.ustring.match( param_name , s ) ~= nil then
    		return "Gruppe"
    	end
    end
    
    for k,v in pairs(translations) do

    	if param_name == k then
    		label = v
    	end
    	
    	if label ~= "" then
    		return label	
    	end
    	
    end

	return label
end

local function getBestP18fromWikidata()
	
	if not mw.wikibase then
		mw.log('no wikibase connection')
		return ""	
	end
	local wikidataItem = mw.wikibase.getEntity('Q131219') -- remove qid when testing is over
	if not wikidataItem then
		return ""
	end
	local claims = wikidataItem:getBestStatements('P18')
	if not claims then
		return ""	
	end
	
	local img = claims[1]['mainsnak']['datavalue']['value']
	
	return img
	
end


local navn = "{{{navn|{{PAGENAME}}}}}"
local bilde = "[[Fil:" .. getBestP18fromWikidata() .. "|frameless]]"
local taksoboksLinjer = {
    '{| class="infoboks"',
    '|- colspan=2 class="overskrift',
    '!' .. navn,
    '|- colspan=2 class="bilde"',
    '|' .. bilde,
    '|}',
}

local taksoboks = table.concat(taksoboksLinjer, '\n')
table.insert(p, taksoboks)

function p.skrivTaksoboks ( frame )
    -- use table.insert(p, name) to insert a local variable to the package
    return frame:preprocess( taksoboks )
end

return p