Modul:Taksoboks: Forskjell mellom sideversjoner
Hopp til navigering
Hopp til søk
Ingen redigeringsforklaring |
Ingen redigeringsforklaring |
||
| Linje 1: | Linje 1: | ||
local p = {} | local p = {} | ||
--[[ | --[[ | ||
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. | 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. | ||
| Linje 41: | Linje 40: | ||
return label | return label | ||
end | |||
function p.getScientificName( frame ) | |||
local p225value = '' -- P225: vitenskapelig navn | |||
local p6507value = '' -- P6507: autorstreng | |||
local p105value = '' -- P105: taksonomisk rang | |||
local error = false | |||
local italicName = 0 | |||
local italicNames = { | |||
[1] = {['qid'] = 'Q34740', ['label'] = 'slekt', ['abbr'] = nil}, | |||
[2] = {['qid'] = 'Q3238261', ['label'] = 'underslekt', ['abbr'] = ' subg. '}, | |||
[3] = {['qid'] = 'Q3181348', ['label'] = 'seksjon', ['abbr'] = ' sect. '}, | |||
[4] = {['qid'] = 'Q3025161', ['label'] = 'serie', ['abbr'] = ' ser. '}, | |||
[5] = {['qid'] = 'Q7432', ['label'] = 'art', ['abbr'] = nil}, | |||
[6] = {['qid'] = 'Q68947', ['label'] = 'underart', ['abbr'] = ' subsp. '}, | |||
[7] = {['qid'] = 'Q767728', ['label'] = 'varietet', ['abbr'] = ' var. '}, | |||
[8] = {['qid'] = 'Q279749', ['label'] = 'form', ['abbr'] = ' f. '}, | |||
} | |||
if not mw.wikibase then mw.log('no wikibase') return "" end | |||
local subject = mw.wikibase.getEntity() | |||
if not subject then mw.log('no subject') return "" end | |||
local p225 = subject:getBestStatements( 'P225' ) | |||
local p6507 = subject:getBestStatements( 'P6507' ) | |||
local p105 = subject:getBestStatements( 'P105' ) | |||
if not p225 or #p225 < 1 then | |||
mw.log('registrer P225 (vitenskapelig navn)') | |||
error = true | |||
else | |||
p225value = p225[1].mainsnak.datavalue.value | |||
mw.log(p225value) | |||
end | |||
if not p6507 or #p6507 < 1 then | |||
mw.log('registrer P6507 (autorstreng)') | |||
error = true | |||
else | |||
p6507value = p6507[1].mainsnak.datavalue.value | |||
mw.log(p6507value) | |||
end | |||
if not p105 or #p105 < 1 then | |||
mw.log('registrer P105 (taksonomisk rang)') | |||
error = true | |||
else | |||
p105value = p105[1].mainsnak.datavalue.value.id | |||
mw.log(p105value) | |||
for k, v in ipairs(italicNames) do | |||
if v['qid'] == p105value then | |||
italicName = k | |||
break | |||
end | |||
end | |||
end | |||
if not error then | |||
if italicName > 0 then | |||
if italicNames[italicName]['abbr'] then | |||
local oldStr = italicNames[italicName]['abbr'] | |||
local newStr = "''" .. oldStr .. "''" | |||
p225value = mw.ustring.gsub(p225value, oldStr, newStr, 1) | |||
end | |||
end | |||
return "''" .. p225value .. "''<br/><small>" .. p6507value .. "</small>" | |||
else | |||
mw.log('Feil: registrer nødvendige utsagn på Wikidata …') | |||
return '' | |||
end | |||
end | end | ||
return p | return p | ||
Sideversjonen fra 23. jan. 2024 kl. 05:30
Dokumentasjon for denne modulen kan opprettes på Modul:Taksoboks/dok
local p = {}
--[[
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'] = 'Underdivisjon', ['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', ['subtribus'] = 'Undertribus', ['alliance'] = 'Allianse', ['genus'] = 'Slekt', ['subgenus'] = 'Underslekt', ['sectio'] = 'Seksjon', ['zoosectio'] = 'Seksjon', ['subsectio'] = 'Underseksjon', ['zoosubsectio'] = 'Underseksjon', ['series'] = 'Serien', ['subseries'] = 'Underserie', ['species_group'] = 'Artsgruppe', ['species_subgroup'] = 'Artsundergruppe', ['species_complex'] = 'Artskompleks', ['species'] = 'Art', ['subspecies'] = 'Underart', ['variety'] = 'Varietet', ['form'] = 'Form', ['infraspecies'] = 'Infraart', ['infratribus'] = 'Infratribus', ['subzoodivisio'] = 'Subdivisjon', ['micrordo'] = 'Mikro-orden', ['grandordo'] = 'Grandorden', ['cohort'] = 'Kohort', ['informal'] = 'Uformell gruppe', ['informal_group'] = 'Uformell gruppe', ['stem group'] = 'Kronegruppe', ['crown group'] = 'Kronegruppe', ['total group'] = 'Kronegruppe', ['legion'] = 'Legion', ['infralegion'] = 'Infralegion', ['superlegion'] = 'Overlegion', ['sublegion'] = 'Underlegion', ['cladus'] = 'Gruppe', ['clade'] = 'Gruppe', ['ichnostem-group'] = 'Iknokronegruppe', ['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'] = 'Iknounderart', ['ichnoinfraspecies'] = 'Iknoinfraart', ['ooclassis'] = 'Ooklasse', ['oosubclassis'] = 'Oounderklasse', ['oosupercohort'] = 'Oooverkohort', ['oocohort'] = 'Ookohort', ['oomagnordo'] = 'Oohyperorden', ['oosuperordo'] = 'Ooverorden', ['oordo'] = 'Oorden', ['morphotype'] = 'Morfotype', ['oofamilia'] = 'Oofamilie', ['oogenus'] = 'Ooslekt', ['oosubgenus'] = 'Oounderslekt', ['oospecies'] = 'Ooart', ['oosubspecies'] = 'Oounderart', ['ooinfraspecies'] = '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
function p.getScientificName( frame )
local p225value = '' -- P225: vitenskapelig navn
local p6507value = '' -- P6507: autorstreng
local p105value = '' -- P105: taksonomisk rang
local error = false
local italicName = 0
local italicNames = {
[1] = {['qid'] = 'Q34740', ['label'] = 'slekt', ['abbr'] = nil},
[2] = {['qid'] = 'Q3238261', ['label'] = 'underslekt', ['abbr'] = ' subg. '},
[3] = {['qid'] = 'Q3181348', ['label'] = 'seksjon', ['abbr'] = ' sect. '},
[4] = {['qid'] = 'Q3025161', ['label'] = 'serie', ['abbr'] = ' ser. '},
[5] = {['qid'] = 'Q7432', ['label'] = 'art', ['abbr'] = nil},
[6] = {['qid'] = 'Q68947', ['label'] = 'underart', ['abbr'] = ' subsp. '},
[7] = {['qid'] = 'Q767728', ['label'] = 'varietet', ['abbr'] = ' var. '},
[8] = {['qid'] = 'Q279749', ['label'] = 'form', ['abbr'] = ' f. '},
}
if not mw.wikibase then mw.log('no wikibase') return "" end
local subject = mw.wikibase.getEntity()
if not subject then mw.log('no subject') return "" end
local p225 = subject:getBestStatements( 'P225' )
local p6507 = subject:getBestStatements( 'P6507' )
local p105 = subject:getBestStatements( 'P105' )
if not p225 or #p225 < 1 then
mw.log('registrer P225 (vitenskapelig navn)')
error = true
else
p225value = p225[1].mainsnak.datavalue.value
mw.log(p225value)
end
if not p6507 or #p6507 < 1 then
mw.log('registrer P6507 (autorstreng)')
error = true
else
p6507value = p6507[1].mainsnak.datavalue.value
mw.log(p6507value)
end
if not p105 or #p105 < 1 then
mw.log('registrer P105 (taksonomisk rang)')
error = true
else
p105value = p105[1].mainsnak.datavalue.value.id
mw.log(p105value)
for k, v in ipairs(italicNames) do
if v['qid'] == p105value then
italicName = k
break
end
end
end
if not error then
if italicName > 0 then
if italicNames[italicName]['abbr'] then
local oldStr = italicNames[italicName]['abbr']
local newStr = "''" .. oldStr .. "''"
p225value = mw.ustring.gsub(p225value, oldStr, newStr, 1)
end
end
return "''" .. p225value .. "''<br/><small>" .. p6507value .. "</small>"
else
mw.log('Feil: registrer nødvendige utsagn på Wikidata …')
return ''
end
end
return p